数据库索引使用
2024-01-08 14:55:47
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'emp_pay')
DROP TABLE emp_pay
IF EXISTS (SELECT name FROM sys.indexes
WHERE name = 'employeeID_ind')
DROP INDEX emp_pay.employeeID_ind
CREATE TABLE emp_pay
(
employeeID int NOT NULL,
base_pay money NOT NULL,
commission decimal(2, 2) NOT NULL
)
INSERT emp_pay VALUES (1, 500, .10)
INSERT emp_pay VALUES (2, 1000, .05)
INSERT emp_pay VALUES (6, 800, .07)
INSERT emp_pay VALUES (5, 1500, .03)
INSERT emp_pay VALUES (9, 750, .06)
无索引查找 SELECT * FROM emp_pay where employeeID=5 创建索引 CREATE UNIQUE CLUSTERED INDEX employeeID_ind ON emp_pay (employeeID) create unique clustered index employeeID_ind 当插入的数据在employeeID字段出现重复时会报错。假如我们在创建索引之前数据字段出现重复,那么就不能创建唯一索引。 删除索引 删除在前面创建的索引employeeID_ind DROP INDEX employeeID_ind ON emp_pay; 格式:CREATE [unique|fulltext|spatial] INDEX 索引的名称 ON 表名(表名的哪一列的列名1,列名2…) 例:为employee表的ename列上建立一个升序普通索引ename_index。 CREATE INDEX ename_index ON employee(ename ASC); 例:在employee表的ename列上建立一个唯一性索引ename_uni_index。 CREATE UNIQUE INDEX ename_uni_index ON employee(ename); 例:在employee表的empno和ename列上建立一个复合索引empno_ename_index。 CREATE INDEX empno_ename_index ON employee(empno,ename); 可以使用show index from table_name语句查看表中已创建的索引 SHOW INDEX FROM employee; 创建表时创建索引 例:创建dept_index表时 为dname字段建立一个唯一性索引dname_index, 为loc字段的前3个字符创建一个前缀索引loc_index。
CREATE TABLE IF NOT EXISTS dept_index (
deptno INT(2),
dname VARCHAR(14),
loc VARCHAR(13),
PRIMARY KEY (deptno),
UNIQUE INDEX dname_index(dname),
INDEX loc_index(loc(3))
);
修改表时创建索引 例:在dept_index表上建立deptno和dname的复合索引。 ALTER TABLE dept_index ADD INDEX deptno_dname_index(deptno, dname); 查看dept_index表已创建的索引 Show index from dept_index; 当给表创建unique约束时,MySQL会自动创建唯一索引。 创建唯一索引时,应保证创建索引的列不包括重复的数据,并且不要有两个及以上的空值(null)。 因为创建索引时将两个空值也视为重复的数据,如果有这种数据,必须先将其删除,否则索引不能被成功创建。 也就是说唯一索引只允许有一个空值。
文章来源:https://blog.csdn.net/u014657752/article/details/135455072
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!