Если вы разбиваете большие таблицы и сохраняете детали на разных серверах, ваш запрос будет выполняться быстрее.
см .: http://dev.mysql.com/doc/refman/5.1/en/partitioning.html
Также обратите внимание, что при использовании таблиц NDB вы можете использоватьКлючи HASH, которые ищутся за O (1) раз.
Количество строк, которое вы можете хранить в промежуточной таблице в отдельной таблице и обновлять ее.Например, в триггере after insert
и after delete
.
Несмотря на то, что триггер замедлится, удаляет / вставляет, но это будет распространяться во времени.Обратите внимание, что вам не нужно хранить все итоги в одной строке, вы можете хранить итоги для каждого условия.Примерно так:
table field condition row_count
----------------------------------------
table1 field1 cond_x 10
table1 field1 cond_y 20
select sum(row_count) as count_cond_xy
from totals where field = field1 and `table` = table1
and condition like 'cond_%';
//just a silly example you can come up with more efficient code, but I hope
//you get the gist of it.
Если вы обнаружите, что всегда рассчитываете на одни и те же условия, это может ускорить ваш переработанный select count(x) from bigtable where ...
с нескольких минут до мгновенного.