MySQL中索引的使用細節

2022-08-25 14:30:21 字數 2173 閱讀 2058

條件字段使用「=」

是指索引列不能是表示式的一部分,也不能是函式的引數

注意:要求索引的列必須是獨立的一列才能用到索引。

在使用like(模糊匹配)的時候,在左邊沒有萬用字元的情況下,才可以使用索引。

在mysql裡,以%開頭的like查詢,用不到索引。

比如:根據歌詞搜尋歌曲的名稱,根據劇情搜尋電影的名稱。sphinx來完成。

如果出現or(或者)運算,要求所有參與運算的字段都存在索引,才會使用到索引。

對於建立的多列(復合)索引,只要查詢條件使用了最左邊的列,索引一般就會被使用。

因為聯合索引是需要按順序執行的,比如c1234組合索引,要想在c2上使用索引,必須先在c1上使用索引,要想在c3上使用索引,必須先在c2上使用索引,依此。

假設某個表有乙個聯合索引(c1,c2,c3,c4)

a where c1=x and c2=x and c4>x and c3=xb 

where c1=x and c2=x and c4=x order

byc3

c where c1=x and c4= x group

byc3,c2

d where c1=x and c5=x order

byc2,c3

e where c1=x and c2=x and c5=? order

by c2,c3

分析下面a-e能否可以使用索引,該錶插入的資料:

create

table

t4 (

c1 tinyint(1) not

null

default0,

c2 tinyint(1) not

null

default0,

c3 tinyint(1) not

null

default0,

c4 tinyint(1) not

null

default0,

c5 tinyint(1) not

null

default0,

index

c1234(c1,c2,c3,c4)

);insert

into t4 values (1,3,5,6,7),(2,3,9,8,3),(4,3,2,7,5);

分析:對name和age和email分別建立獨立索引:最終只能使用到乙個索引。如果對name和age和email 建立了聯合索引,在按照建立索引的順序使用時,都用到了索引。結論:如果有多個條件經常出現在where條件中,則可以對條件字段建立聯合索引。

應用:比如goods表裡面,cat_id和**,就可以建立乙個聯合索引。

mysql中索引的使用

索引是加速查詢的主要手段,特別對於涉及多個表的查詢更是如此。本節中,將介紹索引的作用 特點,以及建立和刪除索引的語法。索引是快速定位資料的技術,首先通過乙個示例來了解其含義及作用,詳細的介紹請參考第14章。1 索引示例 假設對於10.3節所建的表,各個表上都沒有索引,資料的排列也沒有規律,如表13....

MySQL中索引的使用

語法 create table table name 屬性名 資料型別 約束條件 屬性名 資料型別 約束條件 unique fulltext spatial index key 別名 屬性名 asc desc 建立普通索引 普通索引 create table score id int auto in...

mysql中索引的使用

我們在使用sql時,在遇到sql效能下降 執行時間長時,就需要考慮用索引來幫我們解決問題。如,資料過多,關聯太多的表等。建立索引 create index idx name age address on student name,age,address create table student id...