我试图找出表中是否存在一行。使用 MySQL,做这样的查询是否更好:
SELECT COUNT(*) AS total FROM table1 WHERE ...
并检查总数是否非零,或者最好执行如下查询:
SELECT * FROM table1 WHERE ... LIMIT 1
并检查是否返回了任何行?
在这两个查询中,WHERE 子句都使用索引。
您也可以尝试EXISTS:
EXISTS
SELECT EXISTS(SELECT * FROM table1 WHERE ...)
根据文档,您可以做SELECT任何事情。
SELECT
传统上,EXISTS 子查询以 SELECT * 开头,但它可以以 SELECT 5 或 SELECT column1 或任何其他开头。 MySQL 在这样的子查询中忽略了 SELECT 列表,因此没有区别。