在 where 子句中选择唯一 id 时是否必须使用“FETCH FIRST n ROWS ONLY”或“LIMIT”

Mar*_*lar 5 mysql sql db2 postgresql

我想知道如果我使用表中的索引查询唯一id以提高性能,是否必须使用FETCH FIRST n ROWS ONLYDB2中的语句或MySQL中的语句。LIMIT或者 SQL 提供程序是否已经注意到,当找到该行时,最多只有一个结果并停止查询?

查询示例:
DB2: SELECT * FROM myTable WHERE id = 1 FETCH FIRST 1 ROWS ONLY
MySQL:SELECT * FROM myTable WHERE id = 1 LIMIT 1

有人已经考虑过这个问题了吗?

dat*_*rik 2

您可以在 Db2 中使用两者,请检查FETCH FIRST 1 ROWS ONLYDB2兼容性设置LIMIT

如果只返回一行,则是否指定该语法并不重要。但是,如果您或系统不确定,那么这是一个额外的保护措施。根据优化器设置(或情绪、统计数据或元数据),附加语法可能有助于提高性能。原因是数据库系统知道只应返回 1 行,并且可以针对这种情况进行优化。

如果id上有唯一索引,那么它应该是显而易见的,但是有索引吗......?