Я нашел несколько ресурсов, которые говорят о настройке сервера базы данных, но я не нашел много на настройке отдельных запросов.
Например, в Oracle я могу попытаться добавить подсказки, чтобы игнорировать индексы или использовать sort-merge vs. коррелированные соединения, но я не могу найти многого при настройке Postgres, кроме с использованием явных соединений и рекомендаций, если массовые таблицы загрузки.
Существуют ли какие-либо такие руководства, поэтому я могу сосредоточиться на настройке большинства прогонов и/или неэффективных запросов, надеюсь, без ущерба для текущих хорошо выполняющихся запросов?
Я даже был бы рад найти что-то, что сравнивало бы то, как некоторые типы запросов выполнялись относительно других баз данных, поэтому я лучше понял, чего не следует избегать.
обновление:
Я должен был упомянуть, я взял все классы Oracle DBA вместе с их моделированием данных и SQL-тюнингами в течение 8 дней... поэтому я знаю об "EXPLAIN", но это больше, чтобы рассказать вам, что происходит неправильно с запросом, не обязательно, как сделать его лучше. (например, "while" var = 1 или var = 2 "и" while var in (1,2) "считается одинаковым при создании плана выполнения? Что делать, если я делаю это с 10 перестановками? Когда многостолбцы Используемые индексы? Есть ли способы, чтобы оптимизатор планировал оптимизацию для быстрого запуска и быстрого завершения? Какого рода" getchas" можно было бы использовать при переходе с mySQL, Oracle или некоторых других СУБД?)
Я мог бы написать любой сложный запрос по десяткам, если не по сотням способов, и я надеюсь, что им не придется их проверять и найти, какой из них лучше всего работает с помощью проб и ошибок. Я уже нашел, что "SELECT count (*)" не будет использовать индекс, но "SELECT count (primary_key)"... может быть, "PostgreSQL для опытных пользователей SQL-пользователей", который объяснял сортировки запросов к избегать, и как лучше их переписать, или как заставить планировщика справиться с ними лучше.
обновление 2:
Я нашел Сравнение различных реализаций SQL, который охватывает PostgreSQL, DB2, MS-SQL, mySQL, Oracle и Informix и объясняет, как и что вы можете сделать, и его раздел ссылок, связанный с Oracle/SQL Server/DB2/Mckoi/MySQL Database Equivalents ( это то, что предлагает его название), а также справочник wiki-ссылки Справочник по диалогам SQL, который охватывает все, что люди вносят (включая некоторые DB2, SQLite, mySQL, PostgreSQL, Firebird, Vituoso, Oracle, MS-SQL, Ingres и Linter).