人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

MySQL創(chuàng)建索引需要了解的

發(fā)布日期:2022-02-14 12:09 | 文章來源:站長之家

在 MySQL 中,基本上每個表都會有索引,有時候也需要根據不同的業(yè)務場景添加不同的索引。索引的建立對于數(shù)據庫高效運行是很重要的,本篇文章將介紹下創(chuàng)建索引相關知識及注意事項。

1.創(chuàng)建索引方法

創(chuàng)建索引可以在建表時指定,也可以建表后使用 alter table 或 create index 語句創(chuàng)建索引。下面展示下幾種常見的創(chuàng)建索引場景。

#建表時指定索引
CREATETABLE`t_index`(
`increment_id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'自增主鍵',
`col1`int(11)NOTNULL,
`col2`varchar(20)NOTNULL,
`col3`varchar(50)NOTNULL,
`col4`int(11)NOTNULL,
`col5`varchar(50)NOTNULL,
PRIMARYKEY(`increment_id`),
UNIQUEKEY`uk_col1`(`col1`),
KEY`idx_col2`(`col2`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8COMMENT='測試索引';
#創(chuàng)建索引(兩種方法)
#普通索引
altertable`t_index`addindexidx_col3(col3);
createindexidx_col3ont_index(col3);
#唯一索引
altertable`t_index`adduniqueindexuk_col4(col4);
createuniqueindexuk_col4ont_index(col4);
#聯(lián)合索引
altertable`t_index`addindexidx_col3_col4(col3,col4);
createindexidx_col3_col4ont_index(col3,col4);
#前綴索引
altertable`t_index`addindexidx_col5(col5(20));
createindexidx_col5ont_index(col5(20));
#查看表索引
mysql>showindexfromt_index;
+---------+------------+----------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
|Table|Non_unique|Key_name|Seq_in_index|Column_name|Collation|Cardinality|Sub_part|Packed|Null|Index_type|Comment|Index_comment|
+---------+------------+----------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
|t_index|0|PRIMARY|1|increment_id|A|0|NULL|NULL||BTREE|||
|t_index|0|uk_col1|1|col1|A|0|NULL|NULL||BTREE|||
|t_index|1|idx_col2|1|col2|A|0|NULL|NULL||BTREE|||
|t_index|1|idx_col3|1|col3|A|0|NULL|NULL||BTREE|||
+---------+------------+----------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

2.創(chuàng)建索引所需權限

如果你用的不是 root 賬號,那創(chuàng)建索引就要考慮權限問題了,是不是需要 create、alter 權限就行了呢?下面我們來具體看下。

#測試用戶的權限
mysql>showgrants;
+-------------------------------------------------------------------------------------+
|Grantsfortestuser@%|
+-------------------------------------------------------------------------------------+
|GRANTUSAGEON*.*TO'testuser'@'%'|
|GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,ALTERON`testdb`.*TO'testuser'@'%'|
+-------------------------------------------------------------------------------------+
#altertable方式創(chuàng)建索引
mysql>altertable`t_index`addindexidx_col2(col2);
QueryOK,0rowsaffected(0.05sec)
Records:0Duplicates:0Warnings:0
#createindex方式創(chuàng)建索引
mysql>createindexidx_col3ont_index(col3);
ERROR1142(42000):INDEXcommanddeniedtouser'testuser'@'localhost'fortable't_index'
#createindex方式創(chuàng)建索引還需要index權限賦予index權限后再執(zhí)行
mysql>createindexidx_col3ont_index(col3);
QueryOK,0rowsaffected(0.04sec)
Records:0Duplicates:0Warnings:0

從上面測試可以看出,使用 alter table 方式創(chuàng)建索引需要 alter 權限,使用 create index 方式創(chuàng)建索引需要 index 權限。

另外說明下,刪除索引也是可以使用 alter table `tb_name` drop index xxx 和 drop index xxx on tb_name 兩種方式,分別需要 alter 和 index 權限。

索引的優(yōu)點顯而易見是可以加速查詢,但創(chuàng)建索引也是有代價的。首先每建立一個索引都要為它建立一棵B+樹,會占用額外的存儲空間;其次當對表中的數(shù)據進行增加、刪除、修改時,索引也需要動態(tài)的維護,降低了數(shù)據的維護速度。所以我們創(chuàng)建索引時還是需要根據業(yè)務來考慮的,一個表中建議不要加過多索引。

以上就是MySQL創(chuàng)建索引需要了解的的詳細內容,更多關于MySQL創(chuàng)建索引的資料請關注本站其它相關文章!

國外服務器租用

版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯(lián)網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部