Оптимизация запросов
Какая оптимизация выполняется для условия WHERE?
((a AND b) AND c OR (((a AND b) AND (c AND d)) -> (a AND b) OR (a AND b AND c AND d)
(a < b AND b=c) AND a=5 -> b > 5 AND b=5
(b>=5 AND b=5) OR (b = 6 and 5 = 5) or (B=7 and 5 = 6) -> = B=5 or B=6
=, >, >= <, <=, BETWEEN и LIKE с префиксом символа 'something%'
key = 1 or A = 10 -> NULL (Нельзя использовать ключ) key = 1 or A = 10 and key=2 -> key = 1 OR key = 2 key_part_1 = const and key_part_3 = const -> key_part_1 = const
Постоянные таблицы:
- Таблица всего с одной записью.
- Таблица, которая использует только другие константы из таблиц и константы на полном уникальном ключе.
const_table.key = constant
const_table.key_part_1 = const_table2.field and const_table.key_part_2 = constant
Оптимизация памяти, используемой таблицами
Есть несколько вещей, которые Вы можете сделать, чтобы минимизировать количество места, которое используют ваши таблицы. Прежде всего используйте НЕ ПУСТОЙ указатель всякий раз, когда возможно. Это ускорит запросы, и сохранит 1 бит на поле.
Вы можете сохранить много места, используя меньшие целочисленные переменные. Например, MEDIUMINT часто вполне достаточен.
Вообще Вы должны выбрать самый маленький тип данных, в котором Вы будете нуждаться, если есть проблемы с памятью.
Имейте в виду, что поля фиксированной длины в mysql обрабатываются значительно быстрее. Избегая полей переменной длины (VARCHAR, BLOBs), можно повысить эффективность на 10-200%.