Измерение производительности SQL-запросов - PullRequest
2 голосов
/ 10 июня 2011

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

Мой вопрос: как вы оцениваете производительность конкретного SQL-запроса? А какие показатели учитываются?

Например,

SELECT * FROM MyTable;

и

SELECT * FROM MyTable UNION SELECT * From MyTable;

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

Существуют ли инструменты для этого? Есть ли какой-либо тип трассировки стека SQL? Etc ...

Спасибо.

Ответы [ 2 ]

2 голосов
/ 10 июня 2011

Предполагается, что вы говорите о SQL Server (вы не указали ...):

Вам нужно изучить SQL Server Profiler - илучшее вступление вокруг - серия из шести частей, называемая

Мастеринг SQL Server Profiler

, в которой Брэд МакГи рассказывает, как начать использовать Profiler и что получитьс него.

Red-Gate Software также публикует бесплатную электронную книгу по Мастеринг SQL Server Profiler (также Брэду)

1 голос
/ 10 июня 2011

Также, если вы говорите о SQL Server, если вы используете SQL Server Management Studio, вы можете попробовать «Показать план выполнения Estimatesd» и / или «Включить фактический план выполнения» (из меню «Запрос»).

Разница в том, что первый не выполняет запрос, а второй выполняет. Таким образом, второе является более точным, но первое полезно, если вы хотите выполнить только «более легкий» запрос.

Оба они отображают дерево выполнения. Вы можете навести курсор на каждый узел и посмотреть статистику. Для сравнения используется «Оценка стоимости поддерева» (чем выше, тем хуже).

Надеюсь, это было полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...