2012-02-28 107 views
2

我想知道如何解析SQL查询。SQL查询如何解析

对于如:

Select count(*) from Users where name = 'John' and age = '24' 

将它取的记录的计数名为“约翰”,然后再从中根据年龄筛选?或者是相反的?

+1

它取决于查询分析器。 – 2012-02-28 13:01:42

回答

1

在查询上运行Explain函数或更好地打开查询分析器。

+0

它将取决于引擎。 MySQL,SQLite,SQL服务器等也有时可能取决于数据库如何学习该表(基于查找和索引进行优化)。值得一提的是,你可能应该更担心Count(*)。 Id改变那个数(1) – Luc 2012-02-28 13:05:31

+0

但是在性能方面不算(*)和数(1)相同吗? – Chillax 2012-02-28 13:12:28

+0

没有。巨大的性能。那么从我的知识 – Luc 2012-02-28 13:13:45

0

选择/过滤优先顺序不依赖于解析器,而是依赖于优化器。这样做的方式将取决于许多问题,包括数据库引擎,在数据库表上设置索引,在数据库表上分区,在查询中加入其他表,查询中包括的选择条件等。

如果这是特定于Oracle的,那么Jonathan Lewis的“基于成本的Oracle基础知识”可能会有帮助。

0

它会过滤所有记录的第一个基于地方(如果您有任何一组由它会做到这一点)之后,它会指望它