MySQL的索引创建
1.索引创建:
这里以一个示例讲解:创建一个ct_pay_demotest表:
CREATE TABLE `ct_pay_demotest` (
`FId` bigint(20) NOT NULL,
`fnum` varchar(50) NOT NULL DEFAULT ' ',
`fdate` datetime DEFAULT NULL,
`fname` varchar(50) NOT NULL DEFAULT ' ',
`fother` varchar(50) NOT NULL DEFAULT ' ',
`forg` bigint(20) DEFAULT NULL,
PRIMARY KEY (`FId`) USING BTREE
);
创建普通索引:
CREATE INDEX idx_pay_fnum ON `ct_pay_demotest`(`fnum`);
ALTER TABLE `ct_pay_demotest` ADD INDEX idx_pay_fnum(`fnum`);
也可以在建表的时候直接创建索引:
CREATE TABLE `ct_pay_demotest` (
`FId` bigint(20) NOT NULL,
`fnum` varchar(50) NOT NULL DEFAULT ' ',
`fdate` datetime DEFAULT NULL,
`fname` varchar(50) NOT NULL DEFAULT ' ',
`fother` varchar(50) NOT NULL DEFAULT ' ',
`forg` bigint(20) DEFAULT NULL,
PRIMARY KEY (`FId`) USING BTREE,
KEY `idx_pay_fnum` (`fnum`)
);
创建组合索引:
ALTER TABLE `ct_pay_demotest` ADD INDEX idx_pay_fdate_fnum(`fdate`, `fnum`);
这些都是最基本的索引,它没有任何限制,CHAR,VARCHAR类型,length可以小于字段实际长度;
注意:如果是BLOB和TEXT类型,必须指定length
创建唯一索引:
CREATE UNIQUE INDEX uni_pay_fid ON `ct_pay_demotest`(`fid`);
ALTER TABLE `ct_pay_demotest` UNIQUE INDEX uni_pay_fid(`fid`);
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一
查询索引:
SHOW INDEX FROM `ct_pay_demotest`;
删除索引:
DROP INDEX idx_pay_fnum ON `ct_pay_demotest`;
ALTER TABLE `ct_pay_demotest` DROP INDEX idx_pay_fnum;