MySQL建立索引

2022-08-23 10:48:13 字數 1419 閱讀 7974

mysql的資料索引我們開發的時候一定都會用到,比如我們的主鍵、唯一等這些都是有到索引的內容,但是如果只有這樣的索引在我們的實際開發中肯定滿足不了我們的需求,這個時候就需要我們來建立相關的索引,但是索引建立並不是胡亂的建立,以下給出大家一些建議

索引:提高資料查詢的速度,一般建立索引的列為很少改動的列。

1、例句: select * from user where userid = '123456789';

userid很少改變且是唯一值,可以對userid建立索引;

2、例句:select * from user where name = '李明' and age = 26;

如果name和age是不能為null的列,那麼我們可以對這兩列單獨建立索引,但是如果經常使用這兩列進行查詢,就要建立復合索引(name, age);

3、例句:select * from user where name = '李明' and age = 26 and height = 175;

此時我們既想滿足上面的條件又想滿足下面的查詢語句的條件的索引,可以會建立兩個索引(name,age)和(name,age,height),但是通常可以建立復合索引(name,age,height)即可,因為復合索引滿足最佳左字首原則,會建立以下三個索引(name,age,height)、(name,age)、(name);

4、例句:select * from user where number like  '2017%';

學號是按年月日+四位數字,此時想查學號的年份是2017的學生,為了提高查詢速度,如果對number建立索引使用,模糊查詢(%123%)索引會失效,此時可以使用短索引,也就是只對number的字首,前四位建立索引即可。

5、select * from user where grade = '二年級' order by number;

查詢二年級的學生並對其進行排序,此時如果對grade和number分別建立了索引,採用上面的方式進行查詢時,索引是沒有效果的,因為where子句中已經有了索引,此時order by中的索引不會生效,導致整個sql語句的索引都不會生效。

6、select * from user where year(time) < 2017 and grade not in ('二年級','三年級');

此時無論是建立在time還是grade的索引都會失效,索引的列是不能進行計算的,採用計算該列的索引就會失效,使用not in 語句也會失效,不過可以使用not exists代替。

通常索引的列可以進行<,>,=,<=,>=,between,in操作。

如果sql語句中包含or,<>,like '%123',所在列不能null,盡量不要在重複值過多的列建立索引

7、in和not in在主鍵上的唯一索引是可以使用的,但是在其他不是唯一索引列索引是失效的。

以上就是一些簡單索引建立的選擇,但是越複雜的索引建立肯定不是這樣簡單的,後面會給大家繼續更新 

(索引)建立MySQL索引

建立索引的必要性 主鍵預設是建立索引的,而且具有唯一性 合適地建立索引後比不建立索引,提高了查詢速度 建立索引的語法 簡單索引 可以有重複資料 create index indexname on tablename column name 1舉例子說明如 建立乙個資料表,設定一些初始的資料,然後採用...

c mysql建立索引 MySQL 建立索引

1 索引建立原則 1 搜尋的索引列,不一定是所要選擇的列。換句話說,最適合索引的列是出現在where子句中的列,或連線子句中指定的列,而不是出現在select關鍵字後的選擇列表中的列。2 使用唯一索引。考慮某列中值的分布。索引的列的基數越大,索引的效果越好。3 使用短索引。如果對字串列進行索引,應該...

mysql索引新增 mysql 建立索引

mysql 索引 內容主要摘抄自 mysql5.7從入門到精通 索引是對資料庫表中的一列或多列進行排序的一種資料結構,使用索引可以提高資料庫中特定資料的查詢速度。一 索引含義和特點 索引是乙個單獨的 儲存在磁碟上的資料庫結構,它們包含著對資料表裡所有記錄的引用指標。mysql 中索引儲存型別有兩種 ...