資料庫索引 Mysql

2021-10-20 19:39:29 字數 2988 閱讀 7694

(1):普通索引——最基本的索引,沒有任何限制。(關鍵字:index)

(2):唯一索引——與普通索引類似,但是索引值必須唯一,允許有空值。(關鍵字unique)

(3):主鍵索引——它是一種特殊的唯一索引,不允許有空值。一般會在建表的時候同時建立主鍵索引,如果設定了主鍵其實就是建立了主鍵索引。(關鍵字primary)

(4):組合索引——為了進一步提高效率,就考慮建立組合索引。就是將多列建到乙個索引裡

(5):全文索引——希望通過關鍵字的匹配來查詢過濾,那麼就需要相似度的查詢,全文索引就是為這種場景設計的。(關鍵字fulltext)

有人可能會用like +%就可以了,對於文字比較少時是合適的,如果對大量的文字資料檢索,全文檢索比like+%快n倍,但是全文索引可能會存在精度的問題。

1:索引並非越多越好。

2:避免對經常更新的表進行過多的索引,並且索引中的列盡可能少。

3:資料量小的表最好不要使用索引。

4:在條件表示式中經常用到的不同值較多的列上建立檢索,在不同值少的列上不要建立索引。

5:當唯一性是某種資料本身的特徵時,指定唯一索引。

6:在頻繁進行排序或分組(即進行

group by

或order by

操作)的列上建立索引

1:建立表時建立索引。語法:create  table 

table_name

[col_name

data_type

]  [unique|fulltext|spatial] [index|key]    [index_name

] (col_name

[length])   [asc | desc]

2:在已經存在的表上建立索引。①:使用alter table 語句。②:使用create index 建立索引,

create index index_name on talbe_name(column_name(length));     create + 索引型別+索引名 + on + 表名(列名(列長度));

alter table_name add index[index_name] on (column_name(length)); 

注意:1:如果是char,varchar型別,length可以小於字段實際長度;如果是blob和text型別,必須指定 length。

2:如果表中建立多個單列索引,查詢時會遠遠低於組合索引。雖然有多個索引,但是mysql只能用到它認為最有效率的單列索引

3:mysql的全文索引,有最小搜尋長度和最大搜尋長度,這個可以通過命裡show variable like  '%ft%';檢視,只有在這個區間,全文索引不失效,同時表裡只是要有4條以上的記錄

例如:create index index_name on talbe_name(column_name(length));            -- 建立普通索引

create unique unique_name on table_name(column_name(length));      -- 建立唯一索引

create primary primary_name on table_name(key_name(length));            -- 主鍵索引

create index  index_col1_col2_col3_name on table_name(col1_name(length),col2_name,col3_name);         -- 組合索引,這裡的length長度,只要大於實際儲存值的長度就可以

create fulltext index index_name on table_name(col1,col2);                -- 全文索引,可以單列也可以多列

和like+%不同,全文索引有自己的語法格式,使用match和against關鍵字,如:select * from table_name where match(col1,col2) against('***x  yyyy');

1:使用alter table 刪除索引。語法: alter table table_name drop index index_name

2:使用drop index語句刪除索引。語法:drop index index_name on talbe_name

1:以萬用字元%和_開頭作查詢時,mysql不會使用索引。select * from table_name where name like '%admin'   ——這樣的不生效

2:範圍欄位會結束索引對範圍後面索引欄位的使用。select * from table_name where age > 20 and name = 'admin'   ——age索引生效,後面的索引不生效

3:!=   不走索引。 select * from talbe_name where age != 20 and name = 'admin'     ——這種情況,索引不生效

4:用索引計算的,索引無效。select * from table_name where age = 10+8 (走索引) select * from table_name where age + 8 = 18   (不夠索引)

5:對索引列用函式了,不走索引。select * from student where  concat('name','哈') ='王哈哈';(不走) select * from student where name = concat('王哈','哈');(走索引)

1:建立主鍵索引和唯一索引,可以保證資料庫表中每一行資料的唯一性

2:建立索引可以大大提高檢索的資料,以及減少表的檢索行數

3:建立索引,在查詢中使用索引可以提高效能

4:在表連線的連線條件上加索引,可以加速表與表的關聯

5:在分組和排序進行資料檢索,可以減少查詢時間

1:建立索引和維護索引,會耗費時間,隨著資料的增加而增加

2:建立索引會占用磁碟(物理)空間。每乙個索引都會占用一定的物理空間。如果一張表建立太多的索引,索引檔案會膨脹的很快。

3:當對表資料進行增、刪、改 的時候,索引要動態維護,這樣就會降低資料的維護速度。

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

mysql更新索引庫 Mysql資料庫索引增刪改查

一.索引的作用 一般的應用系統,讀寫比例在10 1左右,而且插入操作和一般的更新操作很少出現效能問題,遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,所以查詢語句的優化顯然是重中之重。在資料量和訪問量不大的情況下,mysql訪問是非常快的,是否加索引對訪問影響不大。但是當資料量和訪問量劇增的...

MySQL資料庫索引

mysql資料庫索引 目錄 1 myisam與innodb的區別 2 索引的優缺點 3 如何選用索引 4 檢視索引 5 雜湊索引 6 b 樹 7 索引分類 1 myisam與innodb的區別 1 show engines 圖1.1 截圖1 a mysql資料表主要支援如圖所示的儲存引擎,分為 事務...