Это способ узнать, был ли индекс использован для конкретного запроса SQL - PullRequest
0 голосов
/ 17 ноября 2009

Иногда один при создании SQL-запросов предполагает, что один из индексов должен использоваться механизмом при получении данных. Но не всегда. Если некоторые из них отсутствуют, механизм, вероятно, будет обрабатывать строки один за другим. Это способ (для sqlite) точно знать, что индекс был использован? Я имею в виду в случаях, более сложных, чем SELECT rowid из таблицы порядок по rowid Проблема также возникает, поскольку, если мы тестируем на простой базе, измерение времени не поможет, разница между ними будет минимальной.

1 Ответ

7 голосов
/ 17 ноября 2009

Большинство СУБД предлагают возможность объяснить, как они выполняли свои запросы. Для SQLite перед оператором SQL стоит слово EXPLAIN .

Итак, для простого случая:

EXPLAIN SELECT * FROM TableName

сообщит вам, использовался ли индекс.

Имейте в виду, что план запроса может изменяться по мере изменения количества и характера данных в вашей базе данных. Механизм может выбрать использование другого индекса в зависимости от размера таблицы, количества и распределения отдельных значений в столбцах индекса. Поэтому информация, которую вы получаете от EXPAIN с вашей тестовой базой данных, может не отражать реальный план запросов для базы данных, полной «реальных» данных.

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