2016-06-09 95 views
0

在mysql中,在包含數千條記錄的表上使用WHERE條件編寫查詢,是否會減慢服務器或程序的速度?WHERE條件是否掃描整個表?

如:SELECT * FROM table_name WHERE id = 5;

+1

使用索引來解決這個問題 –

+0

查看錶結構 – Jens

+0

索引是指?我有點新到mysql – TharinduLucky

回答

2

通過 「默認」 會。

一個例外是當你在列上有索引時。通常,名爲id的列將是主鍵 - 它會生成索引。在這種情況下,查詢會非常快。

另一個例外是如果表被id分區。那麼只有一個分區會被讀取。

而且,如果查詢有limit 1,那麼查詢會讀取表,直到找到匹配,然後停止。

因此,where子句並不總是掃描整個表。

+0

你可以通過在查詢前面使用'EXPLAIN'來檢查索引的用法。 http://dev.mysql.com/doc/refman/5.7/en/explain.html – BitAccesser