查询在mysql中占用了这么多时间,但在oracle中却没有

时间:2013-12-31 09:25:12

标签: mysql database oracle

为什么后续查询需要在mysql中花费这么多时间而不是在oracle

select * from (select * from employee) as a limit 1000

我在oracle和MySQL数据库中使用此表中的50,00,000条记录测试此查询。

我知道这些查询应该像

一样写
select * from employee limit 1000

但是用于显示数据&我们的自定义动态网格中没有行的总数我们只有一个查询,我们使用简单的select * from employee查询,然后添加限制或其他条件。

我们缩短了这个问题。

但我的问题是“为什么mysql中的这种查询需要花费太多时间?”

1 个答案:

答案 0 :(得分:0)

好吧,因为要执行此查询,MySQL必须遍历表中的所有50K行,将它们复制到临时表(在内存或磁盘上,具体取决于大小),然后取出前1000个。

在MySQL中,如果要使用LIMIT优化查询,则需要遵循一些阻止扫描完整数据集的做法(主要是排序列的索引)。

见这里:http://dev.mysql.com/doc/refman/5.0/en/limit-optimization.html