2016-09-08 7 views
0

У меня есть база данных MySQL, состоящая из 13 таблиц. Одна таблица транзакций будет хранить в будущем много данных (почти миллион записей). В этой таблице используется движок хранения InnoDB. Поэтому бизнес-правила требуют знать количество всех записей в этой таблице. Итак, мой вопрос заключается в том, что является более быстрым способом подсчета всех этих записей?MySQL самый быстрый способ подсчета тысяч строк

Первый

Конечно, я могу использовать что-то вроде этого:

SELECT COUNT(*) FROM transaction 

, но очевидно, что это не самое лучшее решение.

Второй

я могу создать дополнительную таблицу, где можно хранить incrementable переменной

enter image description here

и добавить триггер, который начинает выполнение, когда строка была добавлена ​​в таблицу транзакций.

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" 

Итак, что является наиболее подходящим способом разрешения этой ситуации?

+6

Почему вы считаете, что count (*) является «не лучшим решением»? – n8wrl

+1

Вы спрашиваете, какой метод является самым быстрым, но затем продолжайте критиковать первые 2 из 3 методов - это почти похоже на то, что вы хотите, чтобы мы выбрали третье решение. –

+4

Я бы использовал 'SELECT COUNT (*) FROM transaction', если нет проблемы с этим вы пытаетесь решить. Пока у вас не будет проблемы с этим, вы должны использовать наиболее очевидное решение. –

ответ

0

«Бизнес-правило», требующее точного значения числа около миллиона? Отправьте это Дильберту; босс с заостренными волосами будет любить его.

Помните, когда поисковые системы покажут вам точное количество обращений, но они вернут значение так быстро, что оно было подозрительным? Затем они стали немного честнее и сказали, что «хиты 1-20 из более чем 120 000»? Теперь они даже не беспокоятся.

Вы должны как серьезный вопрос - Зачем вам нужен точный номер? Будет ли примерное число? Будет ли число с прошлой ночи достаточно?

С этими ответами мы можем помочь разработать «достаточно хорошее» вычисление, которое также «достаточно быстро».

Смежные вопросы