Я нашел ряд ресурсов, в которых рассказывается о настройке сервера базы данных, но я не нашел много информации о настройке отдельных запросов.
Например, в Oracle я мог бы попытаться добавить подсказки, чтобы игнорировать индексы или использовать сортировку-слияние против коррелированных объединений, но я не могу найти много о настройке Postgres, кроме с использованием явных объединений и рекомендации при таблицах массовой загрузки .
Существуют ли какие-либо такие руководства, чтобы я мог сосредоточиться на настройке наиболее выполняемых и / или неэффективных запросов, надеюсь, без ущерба для текущих хорошо выполняющихся запросов?
Я даже был бы рад найти что-то, что сравнивало бы, как определенные типы запросов выполнялись по отношению к другим базам данных, поэтому у меня было лучшее представление о том, каких вещей избегать.
обновление :
Я должен был упомянуть, что я взял все классы Oracle DBA вместе с их классами моделирования данных и настройки SQL еще в 8i дней ... так что я знаю о "EXPLAIN", но это больше, чтобы рассказать вам, что происходит неправильно с запросом, не обязательно, как сделать его лучше. (Например, считаются ли «while var = 1 или var = 2» и «while var in (1,2)» одинаковыми при создании плана выполнения? Что если я делаю это с 10 перестановками? Когда используются несколько столбцов? Используемые индексы? Есть ли способы заставить планировщик оптимизировать работу для быстрого старта против самого быстрого финиша? С какими «ошибками» я могу столкнуться при переходе с 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 (что и предполагает его название) и с викибуком справочник по диалектам SQL , который охватывает все, что люди вносят ( включает в себя некоторые DB2, SQLite, MySQL, PostgreSQL, Firebird, Vituoso, Oracle, MS-SQL, Ingres и Linter).