Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Тоу Д. -> "Настройка SQL. Для профессионалов" -> 70

Настройка SQL. Для профессионалов - Тоу Д.

Тоу Д. Настройка SQL. Для профессионалов — СПб.: Питер, 2004. — 333 c.
ISBN 5-94723-959-0
Скачать (прямая ссылка): nastroykasqldlyaprof2004.djvu
Предыдущая << 1 .. 64 65 66 67 68 69 < 70 > 71 72 73 74 75 76 .. 161 >> Следующая


Подробности условий фильтрации

Подробности условий фильтрации теряются, когда вы абстрагируете их до обыкновенных чисел. Можно выбрать оптимальный путь к данным, ничего не зная о том, как, или по каким столбцам база данных исключает строки из результата выполнения запроса. Вам необходимо только знать, насколько эффективен в числовом отношении каждый фильтр для достижения поставленных целей исключения строк. Как только вы обнаружите этот абстрактный оптимальный план, вам потребуется вернуться к подробным условиям фильтрации, чтобы понять, что нужно изменить. Можно изменить индексы для достижения оптимального пути, или изменить SQL-код, чтобы заставить базу данных использовать уже существующие индексы, но, в любом случае, этот финальный шаг прост, если вы уже знаете, каков оптимальный абстрактный план.

Когда диаграммы запросов помогают лучше всего

Так же, как некоторые проблемы эквивалентности слишком просты, чтобы требовать абстракции (например: «У Джонни было пять яблок, он съел два, сколько яблок осталось?»), некоторые запросы, подобные запросу в примере 5.1., настолько просты, что абстрактное и формальное представление проблемы может и не потребоваться. Если бы все запросы были двусторонними соединениями, вы бы прекрасно справлялись без диаграмм запросов. Ho в реальных приложениях соединения шести и больше таблиц, и даже соединения 20 и более таблиц встречаются не настолько редко, как вы могли бы предположить. Особенно часто подобные многосторонние соединения встречаются среди запросов, которые вам все же придется настраивать, так как эти более сложные запросы с большей вероятностью требуют ручной настройки. (Мой персональный рекорд — 115-стороннее соединение, а настройка соединений более чем 40 таблиц — обыкновенная рутинная работа.) Чем более полно нормализована ваша база данных и чем сложнее пользовательский интерфейс, тем вероятнее, что вам придется работать с многосторонними соединениями. Это миф, что современные базы данных не могут обрабатывать 20-сторонние соединения. Хотя это правда, что базы данных (некоторые в большей степени, чем другие) с гораздо большей вероятностью требуют ручной настройки для получения пристойной производительности таких сложных запросов, чем для простых.

Кроме очевидных преимуществ избавления от несущественных деталей и концентрации внимания на абстрактной сути, диаграммы запросов часто дают еще
138

5. Диаграммное изображение простых запросов SQL

одно, более тонкое преимущество. С диаграммами становится гораздо проще генерировать практические задачи! В этой главе каждую задачу я начинаю с реального SQL-кода, но я не могу использовать примеры из приложений, защищенных правами собственности, которые я настраивал. Поэтому для получения хороших примеров я придумываю базу данных приложения и реальные сценарии действий, для которых могут быть созданы SQL-запросы. После того как я подробно продемонстрирую процесс сокращения оператора SQL до диаграммы запроса, в оставшейся части книги задачи будут поставлены при помощи диаграмм. Схожим образом большинство трудов по математике концентрируются на абстрактной математике, а не на проблемах эквивалентности. Абстракция позволяет получать компактные задачи и добиваться эффективного обучения. Абстракция спасает меня от головной боли изобретения сотен реалистичных проблем эквивалентности, относящихся к математическим концепциям, которым я хочу научить читателей. Вас может не беспокоить, сколько сил и времени сэкономил я, но абстракция экономит и ваше время. Чтобы лучше изучить настройку SQL, одно из лучших упражнений, которые вам стоит выполнять, — это придумывать задачи по настройке SQL и решать их. Если вы начнете с реалистичного SQL-кода, то обнаружите, что это медленный и болезненный процесс, но если вы придумаете задачи, выраженные при помощи диаграмм запросов, то сможете щелкать их сотнями как орехи.

Абстрактная демонстрация использования диаграмм запросов

Я безо всякого доказательства объявил, что диаграммы запросов включают все данные, необходимые для ответа на самые важные вопросы о настройке. Чтобы не испытывать ваше терпение и доверчивость, я продемонстрирую, как использовать диаграмму запроса на рис. 5.1 для подробной настройки соответствующего запроса, особенно для поиска лучшего порядка соединения. Оказывается, лучший путь доступа, или план исполнения, для большинства многотабличных запросов включает индексированный доступ к первой, ведущей таблице, за которым следуют вложенные циклы обращений к остальным таблицам, и эти циклы используют индексы по соответствующим ключам соединения в некотором оптимальном порядке соединения.

ПРИМЕЧАНИЕ --------------------------------------------------------------

Для небольших главных таблиц можно слегка улучшить производительность, заменив для них соединения методом вложенных циклов соединениями хэшированием, но улучшения в этом случае минимальны и не стоят вероятного риска по отношению к надежности, который всегда присутствует при использовании хэширования.
Предыдущая << 1 .. 64 65 66 67 68 69 < 70 > 71 72 73 74 75 76 .. 161 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100