当你在gmail中搜索单词时,gmail说: 1-20 of about 98
98是估计值我如何在搜索中使用mysql执行此操作?
我不想使用COUNT
函数或SQL_CALC_FOUND_ROWS
,因为我有一行1M行并使用fulltext
搜索。
我想估计不算数!
答案 0 :(得分:2)
也许你可以使用表格的大小(磁盘大小)。
尝试进行如下查询:
SELECT DATA_LENGTH + INDEX_LENGTH
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME='...';
答案 1 :(得分:1)
如果count
或SQL_CALC_FOUND_ROWS
对您没有帮助,则有一些选择:
select table_rows
from information_schema.tables
where table_schema = 'database_name'
and table_name = 'table_name' ;
不错,但表现很好。
将counter
的值外部化到另一个表中,并在插入/删除语句期间对其进行更新(性能更高,更准确,但会增加写语句的开销)
应用程序中的缓存计数器(我们可以想象有一个后台工作程序,每隔30分钟就会获取“更新”值并更新缓存中的值)服务将始终使用缓存值
解决方案1和3大约是estimates
,但不要忘记棘手的部分(使用过滤后的列进行计数..因此,where
子句)...解决方案1不再有用,解决方案2和3需要根据counter
等一些“静态过滤”来维持多个count() where sexe='M'
...
最后使用随机过滤器值..您被卡住了..并且您需要在目标表上使用count
选项以实现最佳索引(或者尝试通过全文搜索为数据建立索引)像弹性搜索)