Первые запросы ведут себя хаотично - PullRequest
1 голос
/ 13 марта 2012

Я выполнил один и тот же запрос в количестве таблиц (содержащих различное количество записей):

SELECT * FROM `tblTest`
ORDER BY `tblTest`.`DateAccess` DESC;

Почему первые запросы ведут себя хаотично (дольше, чем второй, третий ...)?

Я вычислил среднее по второму, третьему и четвертому запросам, испустив первый запрос.

Так, например, в таблице с 1 000 000 записей первый раз для обработки занимает 4,8410 с, а второй раз -всего 0,8940 с.Почему это происходит?

enter image description here

ps Я использую инструмент phpMyAdmin.

1 Ответ

2 голосов
/ 13 марта 2012

СУБД являются действительно умными приложениями и поддерживают несколько каталогов для оптимизации их выполнения. Когда выполняется запрос, он генерирует много записей в базе данных в зависимости от используемой СУБД, эти каталоги будут более оптимизированы и даже могут автоматически генерировать индекс для оптимизации действительно часто используемых запросов. Все они также имеют то, что называется оптимизатором запросов, который анализирует план выполнения запроса с целью оптимизации плана выполнения.

В вашем конкретном случае вы должны взглянуть на кэширование запросов и результатов, следующая статья должна помочь вам понять, как mysql изначально пытается оптимизировать обработку запросов.

http://dev.mysql.com/doc/refman/5.5/en/query-cache.html

http://www.cyberciti.biz/tips/enable-the-query-cache-in-mysql-to-improve-performance.html

Вот сравнение между oracle, mysql и postgres (не новая статья, но даст вам общее представление о том, как разные dbms по-разному обрабатывают сложные запросы в больших базах данных)

http://dcdbappl1.cern.ch:8080/dcdb/archive/ttraczyk/db_compare/db_compare.html#Query+optimization

Приветствия

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