Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何估计mysql搜索查询中的行数?_Mysql_Sql - Fatal编程技术网

如何估计mysql搜索查询中的行数?

如何估计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='...';

当你在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='...';
如果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子句。也许有另一种方法可以满足你的需求。