Порядок столбцов в многостолбцовом индексе, упорядоченном на основе В-дерева, означает, что индекс сортируется сначала по самому левому столбцу, затем по следующему и т.д. Таким образом, индекс можно просматривать как в прямом, так и в обратном порядке, чтобы удовлетворить запросы с фразами ORDER BY, GROUP BY и DISTINCT, в которых порядок столбцов точно соответствует индексу.
mysql> SELECT SUM(staff_id = 2), SUM(customer_id = 584) FROM payment\G
Скорость операций вставки сильно зависит от порядка вставки. Вставка строк в порядке, соответствующем первичному ключу, — самый быстрый способ загрузки данных в таблицу InnoDB. После загрузки большого количества данных, если вы не загружали строки в порядке первичного ключа, целесообразно реорганизовать таблицу с помощью OPTIMIZE TABLE.
Префиксные индексы могут быть отличным способом уменьшения размера и повышения быстродействия индекса, но у них есть и недостатки: MySQL не может использовать префиксные индексы для запросов с фразами ORDER BY или GROUP BY,
В одном запросе можно посчитать селективность нескольких разных длин префиксов, что особенно полезно для очень больших таблиц.
Селективность полного столбца можно найти следующим образом:
mysql> SELECT COUNT(DISTINCT city)/COUNT(*) FROM sakila.city_demo;
+-------------------------------+
| COUNT(DISTINCT city)/COUNT(*) |
+-------------------------------+
| 0.0312 |
+-------------------------------+
В среднем префикс будет примерно таким же хорошим (с небольшой оговоркой), если его селективность около 0,031.
Взаимодействие между LOCK TABLES и транзакциями сложное, и в некоторых версиях сервера наблюдается непредвиденное поведение. Поэтому мы рекомендуем никогда не применять LOCK TABLES
Лучше всего не смешивать подсистемы хранения в своем приложении.
ACID расшифровывается как atomicity, consistency, isolation и durability (атомарность, согласованность, изолированность и долговечность).
Тапио Лахденмаки и Майка Лича Relational Database Index Design and the Optimizers (издательство Wiley).