mysql 字段索引的問題
問題描述
在sf看到篇文章里面有這么一段關于數據表索引的
KEY `idx_status_date` (`status`,`date`)
我想問下 上面的寫法 和下面的寫法 有什么區別么?
KEY `status` (`status`),KEY `date` (`date`)
問題解答
回答1:一個是組合索引 一個單個字段建立索引 建議你搜索下 組合索引和單個索引類似的文章,主要這個問題解釋起來文字太多,你自己去看下網上資料!
回答2:組合索引跟單字段索引有很大不同 , 組合索引有順序的組合索引對于搜索條件為
status = 0 AND date= 'XXXX'或者status = 0這兩種情況都有效
但是對于date='XXX'的話就沒什么用了而且組合索引只能有一個范圍搜索,這個如果要說起碼要很長, 抽空看看'高性能MySQL'吧 , 里面有介紹
回答3:KEY idx_status_date (status,date)組合索引能說為組合,當然是組合使用的使用才能最大生效第一,組合索引必定有順序之分就像上面那個,status和date作為組合索引在where status = ’1’ and date = ’2017-01-01’的時候,組合索引就會生效。但假如你的搜索條件中,date在status前面,那么索引只會生效一部分因為mysql檢測到status作為索引,但無法使用date索引
而單個索引就更好理解只有你搜索字段哪個建立索引,哪個生效
你可以使用explian 看mysql語句索引使用情況
相關文章:
1. 數組按鍵值封裝!2. java - web項目中,用戶登陸信息存儲在session中好 還是cookie中好,取決于什么?3. angular.js - webpack build后的angularjs路由跳轉問題4. Mysql取下一條記錄5. mysql - 查詢字段做了索引為什么不起效,還有查詢一個月的時候數據都是全部出來的,如果分拆3次的話就沒問題,為什么呢。6. mysql - 大部分數據沒有行溢出的text字段是否需要拆表7. 老師,怎么不講一次性添加多個數據8. python - linux 下用wsgifunc 運行web.py該如何修改代碼9. pdo - mysql 簡單注入疑問10. 表格對其 只涉及到對其,沒有涉及到大小,長寬還有背景色類的嗎
