mirror of
https://github.com/pretix/pretix.git
synced 2025-12-07 22:42:26 +00:00
84 lines
3.9 KiB
ReStructuredText
84 lines
3.9 KiB
ReStructuredText
Additional database indices
|
|
===========================
|
|
|
|
If you have a large pretix database, some features such as search for orders or events might turn pretty slow.
|
|
For PostgreSQL, we have compiled a list of additional database indexes that you can add to speed things up.
|
|
Just like any index, they in turn make write operations insignificantly slower and cause the database to use
|
|
more disk space.
|
|
|
|
The indexes aren't automatically created by pretix since Django does not allow us to do so only on PostgreSQL
|
|
(and they won't work on other databases). Also, they're really not necessary if you're not having tens of
|
|
thousands of records in your database.
|
|
|
|
However, this also means they won't automatically adapt if some of the referred fields change in future updates of pretix
|
|
and you might need to re-check this page and change them manually.
|
|
|
|
Here is the currently recommended set of commands::
|
|
|
|
CREATE EXTENSION pg_trgm;
|
|
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_event_slug
|
|
ON pretixbase_event
|
|
USING gin (upper("slug") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_event_name
|
|
ON pretixbase_event
|
|
USING gin (upper("name") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_order_code
|
|
ON pretixbase_order
|
|
USING gin (upper("code") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_voucher_code
|
|
ON pretixbase_voucher
|
|
USING gin (upper("code") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_invoice_nu1
|
|
ON "pretixbase_invoice" (UPPER("invoice_no"));
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_invoice_nu2
|
|
ON "pretixbase_invoice" (UPPER("full_invoice_no"));
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_organizer_name
|
|
ON pretixbase_organizer
|
|
USING gin (upper("name") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_organizer_slug
|
|
ON pretixbase_organizer
|
|
USING gin (upper("slug") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_order_email
|
|
ON pretixbase_order
|
|
USING gin (upper("email") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_order_comment
|
|
ON pretixbase_order
|
|
USING gin (upper("comment") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_order_event_date
|
|
ON public.pretixbase_order (event_id, datetime);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_orderpos_name
|
|
ON pretixbase_orderposition
|
|
USING gin (upper("attendee_name_cached") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_orderpos_secret
|
|
ON pretixbase_orderposition
|
|
USING gin (upper("secret") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_orderpos_email
|
|
ON pretixbase_orderposition
|
|
USING gin (upper("attendee_email") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_ia_name
|
|
ON pretixbase_invoiceaddress
|
|
USING gin (upper("name_cached") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_ia_company
|
|
ON pretixbase_invoiceaddress
|
|
USING gin (upper("company") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_orderpos_email_upper
|
|
ON public.pretixbase_orderposition (upper((attendee_email)::text));
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_voucher_code_upper
|
|
ON public.pretixbase_voucher (upper((code)::text));
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_logentry_event_date
|
|
ON public.pretixbase_logentry (event_id, datetime);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_logentry_event_cid_date
|
|
ON public.pretixbase_logentry (event_id, content_type_id, datetime);
|
|
|
|
|
|
Also, if you use our ``pretix-shipping`` plugin::
|
|
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_sa_name
|
|
ON pretix_shipping_shippingaddress
|
|
USING gin (upper("name") gin_trgm_ops);
|
|
CREATE INDEX CONCURRENTLY pretix_addidx_sa_company
|
|
ON pretix_shipping_shippingaddress
|
|
USING gin (upper("company") gin_trgm_ops);
|
|
|