新建表
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
`uname` varchar(100) NOT NULL DEFAULT '' COMMENT '姓名',
`phone` char(11) NOT NULL DEFAULT '' COMMENT '電話',
`emp_no` varchar(20) NOT NULL DEFAULT '' COMMENT '員工編號',
`dept_id` int(4) NOT NULL DEFAULT '0' COMMENT '部門id',
`pwd` varchar(255) NOT NULL DEFAULT '' COMMENT '密碼',
`avt` varchar(255) NOT NULL DEFAULT '' COMMENT '頭像',
PRIMARY KEY (`id`),
KEY `index_user` (`dept_id`,`uname`,`phone`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
最左原則
- where子句中欄位的順序不會影響索引的使用
SELECT * FROM `user` WHERE uname = '5f686bb79ff03' AND dept_id = 91 AND phone = '14097548200';
- where子句中,只能按照索引欄位,從右向左依次擷取欄位,剩下的欄位依次作為有效索引
可以直接用的有效索引有:(KEY `index_user` (`dept_id`,`uname`,`phone`) USING BTREE
dept_id
,uname
,phone
),(dept_id
,uname
),(dept_id
)
(dept_id
,phone
)中phone
是走不上索引的,但是當滿足MySQL的索引下推條件時,是可以減少回表次數,從而減少查詢時間的。
本作品採用《CC 協議》,轉載必須註明作者和本文連結