SQL:优化问题,有行吗?

标签 sql query-optimization

我在一些相当大的表(最大的表是 1000 万条记录)上有一个包含五个连接的查询,我想知道行是否存在。到目前为止,我已经这样做来检查行是否存在:

SELECT TOP 1 tbl.Id
FROM table tbl
INNER JOIN ... ON ... = ... (x5)
WHERE tbl.xxx = ...

使用此查询,在存储过程中需要 22 秒,我希望它接近“即时”。这甚至可能吗?我该怎么做才能加快速度?

我获得了我要加入的字段和 WHERE 子句中的字段的索引。

有什么想法吗?

最佳答案

切换到 EXISTS 谓词。一般来说,我发现它比选择前 1 等更快。

所以你可以这样写 IF EXISTS (SELECT * FROM table tbl INNER JOIN table tbl2 .. 做你的事情

关于SQL:优化问题,有行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1097873/

相关文章:

MySQL:选择 count(*) in status killed 消耗 100% 的 CPU

java - Hibernate查询问题

Mysql查询检查where子句中的blob列类型

php - sql语句放入数组导致重复

php - Laravel:如何优化多个查询

sql - sql where 子句中的列顺序

mysql - 如果外键不为空,则左连接多个表 - mysql 优化

java - 使用jpa进行数据库搜索

mysql - SQL ROW 子查询中比较的顺序定义?

sql - PostgreSQL:选择单行 x 次