Spec-Zone .ru
спецификации, руководства, описания, API

8.2.1.2. Как MySQL Optimizes WHERE Пункты

Этот раздел обсуждает оптимизацию, которая может быть сделана для того, чтобы обработать WHERE пункты. Использование в качестве примера SELECT операторы, но та же самая оптимизация просят WHERE пункты в DELETE и UPDATE операторы.

Отметить

Поскольку работа над оптимизатором MySQL является продолжающейся, не вся оптимизация, которую выполняет MySQL, документируется здесь.

Вы могли бы испытать желание переписать свои запросы, чтобы сделать арифметические операции быстрее, жертвуя удобочитаемостью. Поскольку MySQL делает подобную оптимизацию автоматически, можно часто избегать этой работы, и оставлять запрос в более понятной и удобной в сопровождении форме. Часть оптимизации, выполняемой MySQL, следует:

Некоторые примеры запросов, которые очень быстры:

SELECT COUNT(*) FROM tbl_name;SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name;SELECT MAX(key_part2) FROM tbl_name  WHERE key_part1=constant;SELECT ... FROM tbl_name  ORDER BY key_part1,key_part2,... LIMIT 10;SELECT ... FROM tbl_name  ORDER BY key_part1 DESC, key_part2 DESC, ... LIMIT 10;

MySQL разрешает следующие запросы, используя только индексировать дерево, предполагая, что индексированные столбцы являются числовыми:

SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;SELECT COUNT(*) FROM tbl_name  WHERE key_part1=val1 AND key_part2=val2;SELECT key_part2 FROM tbl_name GROUP BY key_part1;

Следующая индексация использования запросов, чтобы получить строки в сортированном порядке без отдельной передачи сортировки:

SELECT ... FROM tbl_name  ORDER BY key_part1,key_part2,... ;SELECT ... FROM tbl_name  ORDER BY key_part1 DESC, key_part2 DESC, ... ;