如何估计mysql搜索查询中的行数?
当你在gmail中搜索gmail一词时,说: 大约98人中的1-20人 这98是一个估计值,在我们的搜索中如何使用mysql实现这一点 我不想使用计数函数或SQL\u CALC\u FOUND\u行,因为我有一个1M行,并且使用全文搜索。如何估计mysql搜索查询中的行数?,mysql,sql,Mysql,Sql,当你在gmail中搜索gmail一词时,说: 大约98人中的1-20人 这98是一个估计值,在我们的搜索中如何使用mysql实现这一点 我不想使用计数函数或SQL\u CALC\u FOUND\u行,因为我有一个1M行,并且使用全文搜索。 我要估计不算 也许您可以使用磁盘上的表大小 尝试进行如下查询: SELECT DATA_LENGTH + INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='...';
我要估计不算 也许您可以使用磁盘上的表大小 尝试进行如下查询:
SELECT DATA_LENGTH + INDEX_LENGTH
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME='...';
也许您可以使用磁盘上的表大小 尝试进行如下查询:
SELECT DATA_LENGTH + INDEX_LENGTH
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME='...';
如果count或SQL\u CALC\u FOUND\u行无法帮助您选择以下选项:
询问模式表中的信息
选择表\u行
来自信息\u schema.tables
其中,表\u schema='database\u name'
和table_name='table_name';
估计,但非常有效
将计数器值外部化到另一个表中,并在insert/delete语句期间更新计数器值,以提高性能和准确性,但会增加写入语句的开销
在您的应用程序中,我们可以想象有一种后台工作程序,它将每30分钟更新一次值,并更新缓存中的值。服务将始终使用缓存值
解决方案1和3是关于估算的,但不要忘记过滤列的复杂部分计数。。所以where子句。。。解决方案1不再有用了,解决方案2和3将需要基于一些静态筛选(如count where sexe='M'
最后使用随机筛选值。。你被卡住了。。您需要在具有最佳索引的目标表上使用count选项,或者如果count或SQL\u CALC\u FOUND\u ROWS不能帮助您获得一些选项,您可以尝试在全文搜索(如弹性搜索)中为数据建立索引:
询问模式表中的信息
选择表\u行
来自信息\u schema.tables
其中,表\u schema='database\u name'
和table_name='table_name';
估计,但非常有效
将计数器值外部化到另一个表中,并在insert/delete语句期间更新计数器值,以提高性能和准确性,但会增加写入语句的开销
在您的应用程序中,我们可以想象有一种后台工作程序,它将每30分钟更新一次值,并更新缓存中的值。服务将始终使用缓存值
解决方案1和3是关于估算的,但不要忘记过滤列的复杂部分计数。。所以where子句。。。解决方案1不再有用了,解决方案2和3将需要基于一些静态筛选(如count where sexe='M'
最后使用随机筛选值。。你被卡住了。。您需要在目标表上使用count选项,使用最佳索引,或者在全文搜索(如弹性搜索)中尝试索引数据到目前为止您尝试了什么??您要共享的任何查询。或您遇到的任何错误??您是否尝试从。。。其中…对不起,我想估计一下,为了获得更好的性能,制造优化是万恶之源–Donald Knuth。如果您的表上有索引,那么计数应该是相当可观的quick@Bojangles全文是一种索引,我使用了它,但是你看到谷歌使用的是估算而不是计算所有的行。到目前为止你尝试了什么??您要共享的任何查询。或您遇到的任何错误??您是否尝试从。。。其中…对不起,我想估计一下,为了获得更好的性能,制造优化是万恶之源–Donald Knuth。如果您的表上有索引,那么计数应该是相当可观的quick@Bojangles全文是一种索引,我使用了它,但您可以看到google使用了估算而不是计算所有行。我知道估算表的所有行是可能的。你说它可用于搜索结果?不完全是罗不,我不知道你需要WHERE子句。也许有另一种方法可以满足您的需求。我知道这可以估算表的所有行。你说它可用于搜索结果?不完全是罗不,我不知道你需要WHERE子句。也许有另一种方法可以满足你的需求。