Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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 SELECT COUNT(*)和SELECT true之间的差异查找十亿行表中的特定行_Mysql_Sql_Postgresql - Fatal编程技术网

Mysql SELECT COUNT(*)和SELECT true之间的差异查找十亿行表中的特定行

Mysql SELECT COUNT(*)和SELECT true之间的差异查找十亿行表中的特定行,mysql,sql,postgresql,Mysql,Sql,Postgresql,我有一张大概有30-50亿行的桌子。我需要检查表中是否有特定值,哪种方法最快 SELECT COUNT(*) AS total FROM schema.table WHERE row = 'pattern'; -- Must return 1 or 0 vs 使用适当的列索引获得“最快”结果的最佳方法是什么?最快的方法是在schema.table(row)上放置索引 然后您可以执行: SELECT true AS is_in_table FROM schema.table WHERE ro

我有一张大概有30-50亿行的桌子。我需要检查表中是否有特定值,哪种方法最快

SELECT COUNT(*) AS total FROM schema.table WHERE row = 'pattern';   -- Must return 1 or 0
vs


使用适当的列索引获得“最快”结果的最佳方法是什么?

最快的方法是在
schema.table(row)
上放置索引

然后您可以执行:

SELECT true AS is_in_table
FROM schema.table
WHERE row = 'pattern' 
LIMIT 1;
对于这个公式,
限制
很重要,除非您明确声明
是唯一的(即使这样,我也不能100%确定MySQL在查询时会记住这一点)


COUNT(*)
在返回行之前,需要查找可能匹配的每个值。如果列被声明为唯一的,那么两个版本之间的性能应该相似。

最快的方法是在
schema.table(行)
上放置索引

然后您可以执行:

SELECT true AS is_in_table
FROM schema.table
WHERE row = 'pattern' 
LIMIT 1;
对于这个公式,
限制
很重要,除非您明确声明
是唯一的(即使这样,我也不能100%确定MySQL在查询时会记住这一点)


COUNT(*)
在返回行之前,需要查找可能匹配的每个值。如果列被声明为唯一的,那么两个版本之间的性能应该相似。

MySQL或PostgreSQL可能重复?MySQL或PostgreSQL可能重复?