php面試題:一張表中,id 是主鍵索引,name是普通索引,下列語句都只取一條,分別有什麼不同

一張表中,id 是主鍵索引,name是普通索引,下列語句都只取一條,分別有什麼不同

select * from table_name where name='smith'

select * from table_name where id=1

考查普通索引與主鍵索引的運行機制。
主鍵索引=唯一索引+非空約束,優先級高於普通索引

索引運行機制:
對於索引中的每一項,MySQL在內部爲它保存一個數據文件中實際記錄所在位置的“指針”。因此,如果我們要查找name等於“smith”的記錄(SQL命令爲select * from table_name where name='smith'),MySQL能夠在name的索引中查找“smith”值,然後直接轉到數據文件中相應的行,準確地返回該行的所有列)。在這個過程中,MySQL只需處理一個行就可以返回結果。如果沒有“name”列的索引,MySQL要掃描數據文件中的所有記錄!顯然,需要MySQL處理的記錄數量越少,則它完成任務的速度就越快

普通索引是二級索引
主鍵索引查找快,還是二級索引快?感覺這個問題應該分引擎回答,如果是MyISAM中,主鍵索引和二級索引是一樣快的,在InnoDB中,主鍵索引快,因爲二級索引找到主鍵後,還要在主鍵索引中再找一遍。

參考資料:http://m.nowcoder.com/discuss/68748?type=0&pos=17
https://www.cnblogs.com/wicub/p/5898286.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章