Mysql SELECT COUNT(*)和SELECT true之间的差异查找十亿行表中的特定行
我有一张大概有30-50亿行的桌子。我需要检查表中是否有特定值,哪种方法最快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
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可能重复?