單列索引和多列索引
單列索引
多個單列索引的選擇問題
多個or條件:
多個單列的效能往往效能很低,盡量建立高效的多列索引。
多列索引
選擇合適的索引順序
避免範圍條件
在where子句中,in是有效的,範圍條件會導致後面的索引無效!
在order by中,範圍條件和in都會導致無法按照索引排序!
按照索引順序進行排序
但是範圍條件和in多值匹配會導致無法使用索引排序。
覆蓋索引
最後多列的索引即使都使用正確,但是優化器依然可能不使用索引,優化器會判斷索引能夠過濾更多的行,如果不行就還是全表掃瞄!
《高效能MySQL》讀書筆記之建立高效能的索引
索引是儲存引擎用於快速找到記錄的一種資料結構。索引優化是對查詢效能優化的最有效手段。索引能夠輕易將查詢效能提高幾個數量級。建立乙個最優的索引經常需要重寫查詢。5.1 索引基礎 在mysql中,儲存引擎首先在索引中找到對應值,然後根據匹配的索引記錄找到對應的資料行。索引可以包含乙個或多個列的值。如果索...
建立高效能索引 《高效能Mysql》筆記2
crate table people last name varchar 50 not null,first name varchar 50 not null,dob date not null,gender enum m f not null,key last name,first name,do...
高效能mysql 樹 高效能mysql精要
1 explain 中 extra using index 表示覆蓋索引,sql優化中最好能使用覆蓋索引,否則 二級索引 需要回表查詢。所謂覆蓋索引,是指要查詢的列正好是索引,而條件也是這個索引之一 2 where 語句中 條件等於主鍵的 在核心索引層完成,條件等於非索引的,在服務層完成 3 讀索引...