Znalazłem wiele zasobów, które mówią o dostrajaniu serwera bazy danych, ale nie znalazłem wiele na temat dostrajania poszczególnych zapytań.Przewodniki do wyszukiwania zapytań PostgreSQL?
Na przykład w Oracle mogę spróbować dodać wskazówki, aby zignorować indeksy lub użyć sortowania w porównaniu do sprzężonych sprzężeń, ale nie mogę znaleźć wiele na temat strojenia Postgrega poza using explicit joins i zaleceń przy bulk loading tables.
Czy istnieją takie przewodniki, więc mogę skupić się na dostrajaniu najczęściej uruchamianych i/lub nieskutecznych zapytań, mam nadzieję, że bez negatywnego wpływu na obecnie skuteczne zapytania?
Byłbym szczęśliwy, gdyby udało mi się znaleźć coś, co porównało niektóre typy zapytań z innymi bazami danych, więc miałem lepszą wskazówkę, jakiego rodzaju rzeczy należy unikać.
aktualizacja:
Powinienem już wspomniano, wziąłem wszystkie klasy DBA Oracle wraz ze swoimi klasami modelowania danych i SQL tuningu powrotem w 8i dni ... więc wiem o „wyjaśnij” , ale to raczej powiedzieć, co jest nie tak z zapytaniem, niekoniecznie jak zrobić to lepiej. (np. są "while var = 1 lub var = 2" i "while var in (1,2)" uważa się za takie samo podczas generowania planu wykonania? Co jeśli robię to z 10 permutacji? Kiedy są wielokolumnowe używane są indeksy Czy są sposoby na to, aby planista mógł zoptymalizować proces, aby uzyskać najszybszy start w porównaniu z najszybszym zakończeniem? Jakie rodzaje "gotch" mogą napotkać po przejściu z mySQL, Oracle lub innego RDBMS?)
Mogę napisać dowolny złożone kwerendy, jeśli nie setki sposobów, i mam nadzieję, że nie będę musiał ich wszystkich wypróbowywać i stwierdzić, który z nich działa najlepiej przez próbę i błąd. Zauważyłem już, że "licznik SELECT (*)" nie będzie używał indeksu, ale "SELECT count (primary_key)" będzie ... może "PostgreSQL dla doświadczonych użytkowników SQL" dokument, który wyjaśnia rodzaje zapytań do unikać i jak najlepiej je ponownie napisać lub jak sprawić, by planista lepiej sobie z nimi radził.
Aktualizacja 2:
znalazłem Comparison of different SQL Implementations obejmujący PostgreSQL, DB2, MS-SQL, MySQL, Oracle i Informix i wyjaśnia, jeśli, jak i pułapek na rzeczy, można spróbować zrobić i jego sekcja odnośników powiązana z Oracle/SQL Server/DB2/Mckoi /MySQL Database Equivalents (co sugeruje jego tytuł) i do wikibook'a SQL Dialects Reference, która obejmuje wszystko, co ludzie wnoszą do projektu (zawiera niektóre DB2, SQLite, mySQL, PostgreSQL, Firebird, Vituoso, Oracle, MS-SQL, Ingres i Linter) .
Niezupełnie dostrajanie zapytań, ale dla tych, którzy pochodzą z mysql, może to być przydatne: http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL – Joe
A dla osób pochodzących z Oracle: http: //www.cs.cmu .edu/~ pmerson/docs/OracleToPostgres.pdf; i ogólnie "gotchas" dla postgres: http://sql-info.de/postgresql/postgres-gotchas.html – Joe
To może być przydatne dla ciebie postgres tuning: http://tekadempiere.blogspot.ae/2014/09/ tuning-postgresql-for-better-performance.html – Sajeev