У меня есть база данных MySQL, состоящая из 13 таблиц. Одна таблица транзакций будет хранить в будущем много данных (почти миллион записей). В этой таблице используется движок хранения InnoDB. Поэтому бизнес-правила требуют знать количество всех записей в этой таблице. Итак, мой вопрос заключается в том, что является более быстрым способом подсчета всех этих записей?MySQL самый быстрый способ подсчета тысяч строк
Первый
Конечно, я могу использовать что-то вроде этого:
SELECT COUNT(*) FROM transaction
, но очевидно, что это не самое лучшее решение.
Второй
я могу создать дополнительную таблицу, где можно хранить incrementable переменной
и добавить триггер, который начинает выполнение, когда строка была добавлена в таблицу транзакций.
CREATE TRIGGER update_counter AFTER INSERT ON transaction
ON counter
BEGIN
count_var = count_var + 1;
END;
но что произойдет, если добавить 10 записей одновременно?
И последнее решение - использовать information_schema. Что-то вроде этого
SELECT TABLE_ROWS
FROM information_schema.tables
WHERE table_name = "transaction"
Итак, что является наиболее подходящим способом разрешения этой ситуации?
Почему вы считаете, что count (*) является «не лучшим решением»? – n8wrl
Вы спрашиваете, какой метод является самым быстрым, но затем продолжайте критиковать первые 2 из 3 методов - это почти похоже на то, что вы хотите, чтобы мы выбрали третье решение. –
Я бы использовал 'SELECT COUNT (*) FROM transaction', если нет проблемы с этим вы пытаетесь решить. Пока у вас не будет проблемы с этим, вы должны использовать наиболее очевидное решение. –