我正在尋找檢查項存在以最快的方式...什麼是檢查數據庫中存在條目的最快方法?
我所有的生活,我做了這樣的事情...
SELECT COUNT(`id`) FROM `table_name`
有些人不使用COUNT(id)
,但是COUNT(*)
。這是否更快?
LIMIT 1
怎麼樣?
P.S. id
我的意思是主鍵,當然。
謝謝你的建議!
我正在尋找檢查項存在以最快的方式...什麼是檢查數據庫中存在條目的最快方法?
我所有的生活,我做了這樣的事情...
SELECT COUNT(`id`) FROM `table_name`
有些人不使用COUNT(id)
,但是COUNT(*)
。這是否更快?
LIMIT 1
怎麼樣?
P.S. id
我的意思是主鍵,當然。
謝謝你的建議!
在大多數情況下,COUNT(*)
是在MySQL(比COUNT(id)
更快,因爲如何分組查詢與COUNT()
是執行,它可能會在未來的版本中進行優化,所以兩個版本都運行相同)。但是,如果你只是想找到如果至少有一個行存在,你可以使用EXISTS
簡單:
(SELECT COUNT(id) FROM table_name) > 0
有點快:
(SELECT COUNT(*) FROM table_name) > 0
快得多:
EXISTS (SELECT * FROM table_name)
我可以在這些例子中使用'WHERE'x' ='abc''嗎?那麼LIMIT 1呢?也許它確實提高了性能? – daGrevis
您可以使用任何這些內部的任何複雜條件(WHERE,多個JOIN)。如果'id'不能爲空,所有3個都是等價的(在相同的情況下它們都返回TRUE或FALSE)。 –
'EXISTS'實際上像'LIMIT 1'一樣工作。當找到符合標準的行時,它會停止搜索更多。 –
如果您不擔心準確性,explain select count(field) from table
速度非常快。
http://www.mysqlperformanceblog.com/2007/04/10/count-vs-countcol/
此鏈接解釋count(*)
和count(field)
之間的差異。如果有疑問,count(*)
至於檢查表是不是空...
SELECT EXISTS(SELECT 1 FROM table)
您最好使用SELECT COUNT(1)FROM table_name –
最快的方法檢查表中是否存在表或快速est方法來檢查數據庫中的表是否有> 0行? –