下面两条SQL语句是否总是产生相同的结果集?
1. SELECT * FROM MyTable where Status='0' order by StartTime asc limit 10
2. SELECT * FROM (SELECT * FROM MyTable where Status='0' order by StartTime asc) limit 10
最佳答案
是的,但是对子查询进行排序可能是一个不好养成的习惯。您可以在第二个示例的子查询之外进一步添加 ORDER BY
,例如
SELECT *
FROM (SELECT *
FROM Test
ORDER BY ID ASC
) AS A
ORDER BY ID DESC
LIMIT 10;
SQLite 仍然在内部查询中执行 ORDER BY
,然后在外部查询中再次对它们进行排序。不必要的资源浪费。
我做了一个 SQL Fiddle进行演示,以便您可以查看每个的执行计划。
关于sql - 在 sqlite SQL 语句中结合 order by 子句使用限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10429738/