Сейчас я спорю, стоит ли использовать COUNT(id)
или "считать" столбцы. Я слышал, что InnoDB COUNT
работает очень медленно без предложения WHERE
, потому что ему нужно заблокировать таблицу и выполнить полное сканирование индекса. Это то же самое поведение при использовании предложения WHERE
?
Например, если у меня есть таблица с 1 миллионом записей. Выполнение COUNT
без предложения WHERE
потребует поиска 1 миллиона записей с использованием индекса. Будет ли запрос значительно быстрее, если при добавлении предложения WHERE
число строк, соответствующих критериям, уменьшится с 1 миллиона до 500 000?
Рассмотрим страницу «Значки» на SO, добавит ли столбец в таблицу badges
с именем count
и увеличит его всякий раз, когда пользователь заработает этот конкретный значок, будет быстрее, чем SELECT COUNT(id) FROM user_badges WHERE user_id = 111
?
Использование MyIASM не вариант, потому что мне нужны функции InnoDB для поддержания целостности данных.