Объяснить, что такое "подсказка", очень легко. Вспомните, когда вы были ребенком, приближался ваш день рождения, и вам
очень
хотелось получить новенький велосипед или замечательную роликовую доску (а сейчас, кстати, не хочется ли получить эти чудесные роликовые коньки)? Вы, конечно, шли прямиком к родителям, но не просили у них в подарок эти штуки (нет, кто был по-храбрее, может быть и просили). Вместо этого вы начинали говорить им что-то вроде: "Ой, у меня начали болеть ноги от моей старой доски" или "Мамочка, когда я сажусь на велосипед, я упираюсь коленками в руль, а ноги у меня цепляются за землю". Вы подкидывали родителям такие миленькие, но сильные ки. И если родители были такими же умными, как Oracle, они обязательно прислушивались к вашим пожеланиям (т. е. к подсказкам) и в большинстве случаев были уверены, что это именно им удалось сделать своих детей счастливыми.Поверите вы или нет, но точно так же работает и оптимизатор Oracle, когда пользователь включает в оператор SQL подсказку
/!:,~>/п>и*/.
Обратите внимание, что за одним небольшим исключением (знак + после /*) подсказка выглядит очень похоже на обычный комментарий. Очень важно, чтобы пользователь поместил подсказку в нужное место оператора SQL, чтобы оптимизатор Oracle смог его распознать. В идеале, она должна быть размещена до упоминания в операторе SQL первого имени столбца.В следующем примере показано, как встроить в оператор SQL подсказку
{/*+hint*/)\
□ SOL.Plus: Release 8.1.5.0.0 - Production on Fri Nov 3 16:04:31 2000
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Connected to:
0racle8i Enterprise Edition Release 8.1.5.0.0 - Production
With the Partitioning and Java options
PL/SQL Release 8.1.5.0.0 - Production
select /*+ FIRST_ROWS */ Last_Name, Hire_0ate, Salary
from EMP
where Mgr_id = 123;
Замечание
Если окажется, что задана неправильная подсказка, оптимизатор проигнорирует ее, так же, как это делали когда-то родители, если вы просили у них что-то совершенно невообразимое. Оптимизатор не уведомляет о том, что сделанная подсказка является недопустимой, потому что такая подсказка интерпретируется просто как комментарий. Это на нас как на лица, заботящиеся о производительности системы, ложится ответственность за проверку плана выполнения оператора SQL. Это мы должны были убедиться, что подсказка воспринята правильно и соответствующим образом обработана.
Можно определить множество подсказок для контроля плана выполнения, который оптимизатор строит для операторов SQL. Полный перечень подска-_ зок и их расшифровок находится в разделе "Настройка Oracle8i" документации по Oracle (преимущественно в электронном виде), поставляемой вместе с программным обеспечением Oracle. Если вы работаете не с Oracle8i, обратитесь к соответствующему разделу по настройке вашей версии базы данных Oracle.
< Предыдущая | Следующая > |
---|