ITPub博客

首页 > IT职业 > > 针对表中的某个字段创建唯一索引和普通索引

针对表中的某个字段创建唯一索引和普通索引

作者:格伯纳 时间:2020-07-13 15:06:31 0 删除 编辑

(一)针对salaries表emp_no字段创建索引

题目描述

针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引。

CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
create index idx_emp_no on salaries(emp_no);

(1)SQLite环境中

在SQLite环境中,强制索引使用INDEXED BY 索引名

创建索引(这个题目默认已建立了索引)

CREATE INDEX  idx_emp_no ON salaries(emp_no);

现在使用 INDEXED BY 子句从表salaries 中选择数据

SELECT *
FROM salaries
INDEXED BY idx_emp_no
WHERE emp_no=10005;

(2)MySQL环境中

在MySQL中,强制索引使用:FORCE INDEX(索引名);

-- 创建索引
CREATE INDEX id_emp_no ON salaries(emp_no);

-- 使用 FORCE INDEX 子句从表salaries中选择数据
SELECT * 
FROM salaries
FORCE INDEX (idx_emp_no) 
WHERE emp_no = 10005;

(二)对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname

题目描述

针对如下表actor结构创建索引:
(注:在 SQLite 中,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作)

CREATE TABLE IF NOT EXISTS actor (
actor_id smallint(5) NOT NULL PRIMARY KEY,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update timestamp NOT NULL DEFAULT (datetime('now','localtime')))

对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname
(请先创建唯一索引,再创建普通索引)

CREATE UNIQUE INDEX uniq_idx_firstname
ON actor(first_name);

CREATE INDEX idx_lastname
ON actor(last_name);

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3118538/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    984251