Советы по выполнению в стиле Oracle

Когда вы пишете довольно сложный SQL для Oracle, рано или поздно вам придется применить нечетную подсказку о выполнении, потому что Oracle, похоже, не может сам определить "лучший" план выполнения.

http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/hintsref.htm

Теперь это, конечно, не стандарт SQL. Но все же, мне интересно, есть ли другие РСУБД, которые поддерживают такие подсказки, и я действительно имею в виду подсказки, которые "встроены" в SQL? Являются ли они похожими, синтаксически (т.е. также размещены между SELECTКлючевое слово и первый выбранный COLUMN)? Знаете ли вы о странице общей документации, сравнивая советы в различных RDBMS?

NB: Меня больше всего интересуют следующие СУБД: Postgres, MySQL, HSQLDB, H2, Derby, SQLite, DB2, Sybase, SQL Server.

3 ответа

Решение

Я знаю, что в db2 планы сделаны фиксированными, а не как. В Oracle 11g есть и другие варианты, кроме добавления подсказок к запросам. Это SQLProfiles и SQLPlan Baselines, оба очень мощные. Я только что закончил проект по настройке производительности, где мы не добавили ни единого намека на код, наоборот.

Вы можете добавить подсказки Oprimizer в любой запрос SQL Server

Предложение PLAN позволяет вам определить конкретный план для вашего запроса в Firebird.

AFAIK, ничего стандартного или близкого к этому, но в целом, вы можете сделать это во многих RDBM, но не во всех.

Я также напомню, что если вы проводите какое-то сравнение с другими платформами БД, то подсказки в Oracle не являются обязательными. То есть Oracle может свободно игнорировать вашу подсказку, если она того пожелает.

Подсказки могут быть полезны, но я нахожу, что я редко использую их больше - по крайней мере, по сравнению с прошлым, когда я работал со старыми оптимизаторами в более ранних версиях Oracle. Тогда намеки были гораздо более важным элементом настройки производительности, чем сейчас.

Другие вопросы по тегам