Това не е просто "куп настройки (индекси и т.н.)". Това е от решаващо значение и трябва да се направи.
Публикувахте малко подробности, но нека опитаме.
Правилото е:Опитайте и намерете най-често срещания работен комплект. Вижте дали се вписва в RAM. Оптимизирайте хардуера, настройките на PG/OS буфера и PG индексите/клъстерирането за него. В противен случай потърсете агрегати или ако не е приемливо и имате нужда от напълно произволен достъп, помислете какъв хардуер може да сканира цялата таблица вместо вас в разумно време.
Колко голяма е вашата таблица (в гигабайти)? Как се сравнява с общата RAM памет? Какви са вашите настройки на PG, включително shared_buffers и effect_cache_size? Това специален сървър ли е? Ако имате маса от 250 гигабайта и около 10 GB RAM, това означава, че можете да поберете само 4% от масата.
Има ли колони, които обикновено се използват за филтриране, като състояние или дата? Можете ли да идентифицирате работния комплект, който се използва най-често (като само миналия месец)? Ако е така, помислете за разделяне или групиране на тези колони и определено ги индексирайте. По принцип се опитвате да се уверите, че възможно най-много от работния комплект се побира в RAM.
Избягвайте да сканирате таблицата на всяка цена, ако не се побира в RAM. Ако наистина имате нужда от абсолютно произволен достъп, единственият начин, по който може да бъде използван, е наистина сложен хардуер. Ще ви е необходима постоянна конфигурация за съхранение/RAM, която може да чете 250 GB за разумно време.