1. 程式人生 > 實用技巧 >Mysql 的簡單索引學習及使用

Mysql 的簡單索引學習及使用

一、建立表後,自行錄入資料。

-- 建立表order_info
DROP TABLE IF EXISTS `order_info`;
CREATE TABLE `order_info` (
  `orderInfoId` bigint(20) NOT NULL AUTO_INCREMENT,
  `externalOrderId` varchar(30) DEFAULT NULL,
  `externalQueryId` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`orderInfoId`)
) ENGINE=InnoDB AUTO_INCREMENT=1168326
DEFAULT CHARSET=utf8mb4;

二、建立唯一索引,測試並檢視執行計劃。

-- 建立唯一索引,其中(order_info_externalQueryId)為索引名,(order_info)為表名,(externalQueryId)為列名
CREATE UNIQUE INDEX order_info_externalQueryId ON order_info(externalQueryId)

-- 刪除建立的唯一索引,其中(order_info_externalQueryId)為索引名
drop index order_info_externalQueryId on order_info ;

-- 檢視執行計劃 EXPLAIN select a.orderInfoId,a.externalOrderId,a.externalQueryId from order_info a where a.externalQueryId = '20200710184819300073'

三、建立多列索引,測試並檢視執行計劃。

-- 建立多列索引,其中(order_info_externalOrderId_externalQueryId)為索引名,(order_info)為表名,(externalOrderId,externalQueryId)為列名
create index order_info_externalOrderId_externalQueryId on
order_info (externalOrderId,externalQueryId) ; -- 刪除多列索引 drop index order_info_externalOrderId_externalQueryId on order_info ; -- 檢視執行計劃 EXPLAIN select a.orderInfoId,a.externalOrderId,a.externalQueryId from order_info a where a.externalOrderId = '200524588688' and a.externalQueryId = '20200710202245301700'

四、建立字首索引,測試並檢視執行計劃。

-- 建立字首索引,其中(order_info_prefix_description)為索引名,(order_info)為表名,(description)為列名,(10)字首長度
create index order_info_prefix_description on order_info (description(10)) ;

-- 刪除字首索引,其中(order_info_prefix_description)為索引名
drop index order_info_prefix_description on order_info ;

-- 檢視執行計劃
EXPLAIN select a.orderInfoId,a.externalOrderId,a.externalQueryId 
from order_info a 
where a.description like '阿克蘇%'