Шпаргалка с указанием относительных «временных затрат» на различные операции с базой данных? - PullRequest
2 голосов
/ 18 мая 2011

Это может считаться странным вопросом, но я ищу "шпаргалку", которая описывает (например), насколько "дороги" различные операции с базой данных.

Я ищу теоретическое понимание (возможно, подкрепленное статистическими данными) .... например, я могу догадаться, что операция выбора с оператором order by медленнее, чем обычная операция выбора.

Но я слышал, что JOINs - самые "дорогие", но я не уверен в этом ... так что было бы хорошо получить некоторые доказательства этого ...

1 Ответ

2 голосов
/ 18 мая 2011

Не уверен, что когда-либо видел такой предмет.Это довольно сложное поле, и локально дешевая операция может быть неоптимальной в глобальном масштабе, если она не позволяет использовать более дешевую стратегию для всего запроса.

Например, сканирование таблиц должно быть дорогим, но частосамая дешевая операция с большой таблицей, если нужно выбрать более нескольких процентов записей.Это связано с тем, что сканирование таблицы в основном состоит из последовательного ввода-вывода, который может относительно эффективно охватывать большой объем потоковых данных по сравнению с большим количеством случайных операций ввода-вывода, которые (например) может использовать операция закладки.

Учебное пособие по оптимизации запросов на самом деле слишком велико, чтобы в него помещалось сообщение о потоке стека (по крайней мере, за то время, которое у меня есть), но в Интернете есть много ресурсов и довольно много печатных книг, которые хорошо справляются с этой задачей.Он также в некоторой степени зависит от платформы, хотя принципы часто применяются на разных платформах.

SQL Server - хорошая система для экспериментов, поскольку входящий в комплект интерфейсный инструмент имеет функцию визуализации плана запросов, даже на бесплатной«экспресс» версии.

...