欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年04月08日 11:07:57   作者:MySQL技術(shù)  
這篇文章主要介紹了MySQL創(chuàng)建索引需要了解的知識,幫助大家更正確的使用MySQL的索引,感興趣的朋友可以了解下

前言: 

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

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

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

# 建表時指定索引
CREATE TABLE `t_index` (
  `increment_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
  `col1` int(11) NOT NULL,
  `col2` varchar(20) NOT NULL,
  `col3` varchar(50) NOT NULL,
  `col4` int(11) NOT NULL,
 `col5` varchar(50) NOT NULL,
  PRIMARY KEY (`increment_id`),
  UNIQUE KEY `uk_col1` (`col1`),
  KEY `idx_col2` (`col2`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='測試索引';

# 創(chuàng)建索引(兩種方法)
# 普通索引
alter table `t_index` add index idx_col3 (col3); 
create index idx_col3 on t_index(col3);
# 唯一索引
alter table `t_index` add unique index uk_col4 (col4);
create unique index uk_col4 on t_index(col4);
# 聯(lián)合索引
alter table `t_index` add index idx_col3_col4 (col3,col4);
create index idx_col3_col4 on t_index(col3,col4);
# 前綴索引
alter table `t_index` add index idx_col5 (col5(20)); 
create index idx_col5 on t_index(col5(20));

# 查看表索引
mysql> show index from t_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)建索引所需權(quán)限

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

# 測試用戶的權(quán)限
mysql> show grants;
+-------------------------------------------------------------------------------------+
| Grants for testuser@%                                                               |
+-------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'testuser'@'%'                                                |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER ON `testdb`.* TO 'testuser'@'%' |
+-------------------------------------------------------------------------------------+

# alter table 方式創(chuàng)建索引
mysql> alter table `t_index` add index idx_col2 (col2);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

# create index 方式創(chuàng)建索引
mysql>  create index idx_col3 on t_index(col3);
ERROR 1142 (42000): INDEX command denied to user 'testuser'@'localhost' for table 't_index'

# create index 方式創(chuàng)建索引還需要index權(quán)限 賦予index權(quán)限后再執(zhí)行
mysql> create index idx_col3 on t_index(col3);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

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

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

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

以上就是MySQL創(chuàng)建索引需要了解的的詳細(xì)內(nèi)容,更多關(guān)于MySQL創(chuàng)建索引的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • mysql存儲過程 在動態(tài)SQL內(nèi)獲取返回值的方法詳解

    mysql存儲過程 在動態(tài)SQL內(nèi)獲取返回值的方法詳解

    本篇文章是對mysql存儲過程在動態(tài)SQL內(nèi)獲取返回值進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • windows上的mysql服務(wù)突然消失提示10061 Unkonwn error問題及解決方案

    windows上的mysql服務(wù)突然消失提示10061 Unkonwn error問題及解決方案

    windows10 系統(tǒng),今天早晨系統(tǒng)自己更新了下,也沒啥問題,突然發(fā)現(xiàn)電腦上安裝的mysql 服務(wù)沒了,經(jīng)過一系列原因分析終于找到解決方案,今天小編給大家分享mysql服務(wù)突然消失:10061 Unkonwn error解決方法,一起看看吧
    2023-07-07
  • Mysql 5.7.19 免安裝版遇到的坑(收藏)

    Mysql 5.7.19 免安裝版遇到的坑(收藏)

    這篇文章給大家分享了mysql 5.7.19免安裝版在安裝過程中遇到的一些問題,以前有mysql服務(wù)的話 需要去停掉mysql服務(wù)。具體內(nèi)容介紹大家參考下本文
    2017-08-08
  • MYSQL 高級文本查詢之regexp_like和REGEXP詳解

    MYSQL 高級文本查詢之regexp_like和REGEXP詳解

    在MySQL中,regexp_like和REGEXP都是用于執(zhí)行正則表達(dá)式搜索的函數(shù),這篇文章主要介紹了MYSQL 高級文本查詢之regexp_like和REGEXP,需要的朋友可以參考下
    2023-05-05
  • mysql提示got timeout reading communication packets的解決方法

    mysql提示got timeout reading communication packets的解決方法

    今天發(fā)現(xiàn)mysql錯誤日志中出現(xiàn)got timeout reading communication packets,一般情況因為部分頁面生成有問題導(dǎo)致,這里簡單分享一下解決方法
    2019-05-05
  • Mysql使用函數(shù)json_extract處理Json類型數(shù)據(jù)的方法實例

    Mysql使用函數(shù)json_extract處理Json類型數(shù)據(jù)的方法實例

    在日常業(yè)務(wù)開發(fā)中通常mysql數(shù)據(jù)庫中某個字段會需要存儲json格式字符串,下面這篇文章主要給大家介紹了關(guān)于Mysql使用函數(shù)json_extract處理Json類型數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • MySQL 加密/壓縮函數(shù)

    MySQL 加密/壓縮函數(shù)

    在MySQL中,加密和壓縮函數(shù)返回二進制串。對其中的許多函數(shù)而言,結(jié)果可能包含任意的字節(jié)值,如果想存儲這些結(jié)果,你應(yīng)該使用一個具有varbinary或者blob二進制串?dāng)?shù)據(jù)類型的列,這可避免潛在的刪除尾部空白問題或者字符集轉(zhuǎn)換問題。
    2009-12-12
  • MySQL 5.6.14 win32安裝方法(zip版)

    MySQL 5.6.14 win32安裝方法(zip版)

    這篇文章主要介紹了MySQL 5.6.14 win32安裝方法(zip版)的相關(guān)資料,非常不錯,需要的朋友可以參考下
    2016-08-08
  • MySQL 常見存儲引擎的優(yōu)劣

    MySQL 常見存儲引擎的優(yōu)劣

    眾所周知,MySql 提供了很多存儲引擎,這里來比較一下常見引擎的優(yōu)劣。幫助大家選擇合適的存儲引擎
    2021-06-06
  • MySQL慢查詢中的commit慢和binlog中慢事務(wù)的區(qū)別

    MySQL慢查詢中的commit慢和binlog中慢事務(wù)的區(qū)別

    這篇文章主要介紹了MySQL慢查詢中的commit慢和binlog中慢事務(wù)的差異,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06

最新評論