在mysql中,在包含數千條記錄的表上使用WHERE條件編寫查詢,是否會減慢服務器或程序的速度?WHERE條件是否掃描整個表?
如:SELECT * FROM table_name WHERE id = 5;
在mysql中,在包含數千條記錄的表上使用WHERE條件編寫查詢,是否會減慢服務器或程序的速度?WHERE條件是否掃描整個表?
如:SELECT * FROM table_name WHERE id = 5;
通過 「默認」 會。
一個例外是當你在列上有索引時。通常,名爲id
的列將是主鍵 - 它會生成索引。在這種情況下,查詢會非常快。
另一個例外是如果表被id
分區。那麼只有一個分區會被讀取。
而且,如果查詢有limit 1
,那麼查詢會讀取表,直到找到匹配,然後停止。
因此,where
子句並不總是掃描整個表。
你可以通過在查詢前面使用'EXPLAIN'來檢查索引的用法。 http://dev.mysql.com/doc/refman/5.7/en/explain.html – BitAccesser
使用索引來解決這個問題 –
查看錶結構 – Jens
索引是指?我有點新到mysql – TharinduLucky