2012-02-28 108 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

它會過濾所有記錄的第一個基於地方(如果您有任何一組由它會做到這一點)之後,它會指望它