2011-09-27 108 views
6

我正在尋找檢查項存在以最快的方式...什麼是檢查數據庫中存在條目的最快方法?

我所有的生活,我做了這樣的事情...

SELECT COUNT(`id`) FROM `table_name` 

有些人不使用COUNT(id),但是COUNT(*)。這是否更快?

LIMIT 1怎麼樣?

P.S. id我的意思是主鍵,當然。

謝謝你的建議!

+0

您最好使用SELECT COUNT(1)FROM table_name –

+3

最快的方法檢查表中是否存在表或快速est方法來檢查數據庫中的表是否有> 0行? –

回答

7

在大多數情況下,COUNT(*)是在MySQL(比COUNT(id)更快,因爲如何分組查詢與COUNT()是執行,它可能會在未來的版本中進行優化,所以兩個版本都運行相同)。但是,如果你只是想找到如果至少有一個行存在,你可以使用EXISTS

簡單:

(SELECT COUNT(id) FROM table_name) > 0 

有點快:

(SELECT COUNT(*) FROM table_name) > 0 

快得多:

EXISTS (SELECT * FROM table_name) 
+0

我可以在這些例子中使用'WHERE'x' ='abc''嗎?那麼LIMIT 1呢?也許它確實提高了性能? – daGrevis

+0

您可以使用任何這些內部的任何複雜條件(WHERE,多個JOIN)。如果'id'不能爲空,所有3個都是等價的(在相同的情況下它們都返回TRUE或FALSE)。 –

+1

'EXISTS'實際上像'LIMIT 1'一樣工作。當找到符合標準的行時,它會停止搜索更多。 –

相關問題