PHP面試 MySQL建立高性能索引考點

MySQL索引面試

    MySQL索引的基礎和類型服務器

      索引的基礎:索引相似於書籍的目錄,要想找到一本書的某個特定篇章,須要查找書的目錄,定位對應的頁碼性能

      存儲引擎使用相似的方式進行數據查詢,先去索引當中找到對應的值,而後根據匹配的索引找到對應的數據行。排序

    索引對性能的影響索引

      大大減小服務器須要掃描的數據量字符串

      幫助服務器避免排序和臨時表效率

      將隨機I/O變爲順序I/O基礎

      大大提升查詢速度,下降寫的速度,佔用磁盤書籍

    索引的使用場景數據類型

      對於很是小的表,大部分狀況下全表掃描效率更高

      中到大型表,索引很是有效

      特大型的表,創建和使用索引的代價將隨之增加,可使用分區技術來解決

    索引類型

      索引有不少種類型,都是實現賊存儲引擎層的

      普通索引:最基本的索引,沒有任何約束限制

      惟一索引:與普通索引相似,但具備惟一性約束

      主鍵索引:特殊的惟一索引,不容許有空值

      面試考點:惟一索引和主鍵索引的區別?

        一個表只能有一個主鍵索引,能夠有多個惟一索引

        主鍵索引必定是惟一索引,惟一索引不是主鍵索引

        主鍵能夠與外鍵構成參照完整性約束,防止數據不一致

      組合索引:將多個列組合在一塊兒建立索引,能夠覆蓋多個列

      外鍵索引:只有InnoDB類型的表纔可使用外鍵索引,保證數據的一致性,完整性和實現級聯操做

      全文索引:MySQL自帶的全文索引只能用於MyISAM存儲引擎,而且只能對英文進行全文檢索。

    MySQL索引的建立原則

      一、最適合索引的列是出如今WHERE子句中的列,或鏈接字句中的列而不是出如今SELECT關鍵字後的列

      二、索引列的基數越大,索引的效果越好

      三、對字符串進行索引,應該制定一個前綴長度,能夠節省大量的索引空間

      四、根據狀況建立複合索引,複合索引能夠提升查詢效率

      五、避免建立過多索引,索引會額外佔用磁盤空間,下降寫操做效率

      六、主鍵儘量選擇較短的數據類型,能夠有效減小索引的磁盤佔用,提升查詢效率

    MySQL索引的注意事項

      一、複合索引遵循前綴原則

      二、like查詢,%不能在前,可使用全文索引

      三、column  is null  可使用索引

      四、若是MySQL估計使用索引比全表掃描更慢,會放棄使用索引

      五、若是or前的條件中的列有索引,後面的沒有,索引都不會被用到

      六、列類型是字符串,查詢時必定要給值加引號,不然索引失效

相關文章
相關標籤/搜索