首页 > 试题广场 >

针对上面的salaries表emp_no字段创建索引idx_

[编程题]针对上面的salaries表emp_no字段创建索引idx_
  • 热度指数:107573 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
针对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

输入

drop table if exists salaries;
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);
INSERT INTO salaries VALUES(10005,78228,'1989-09-12','1990-09-12');
INSERT INTO salaries VALUES(10005,94692,'2001-09-09','9999-01-01');

输出

10005|78228|1989-09-12|1990-09-12
10005|94692|2001-09-09|9999-01-01
SQLite中,使用 INDEXED BY 语句进行强制索引查询,可参考:
SELECT * FROM salaries INDEXED BY idx_emp_no WHERE emp_no = 10005
MySQL中,使用 FORCE INDEX 语句进行强制索引查询,可参考:
SELECT * FROM salaries FORCE INDEX idx_emp_no WHERE emp_no = 10005

编辑于 2017-07-21 11:24:49 回复(12)
更多回答
select * from salaries
indexed by idx_emp_no   -- 强制索引,注意拼写
where emp_no = '10005';

发表于 2019-09-28 22:00:15 回复(0)
读不懂、脑袋瓜要爆炸了、看来计算机不是一天两天学成的啊、哭
发表于 2021-03-01 19:28:42 回复(0)
select * from salaries indexed by idx_emp_no where emp_no = 10005;
发表于 2020-09-08 12:26:36 回复(0)
select * from salaries INDEXED BY idx_emp_no where emp_no=10005;
发表于 2020-08-04 22:28:33 回复(0)
SQLite中使用indexed by 进行强制索引查询,教程:
发表于 2019-03-13 15:00:38 回复(0)
MYSQL中强制索引查询使用:FORCE INDEX(indexname);
SQLite中强制索引查询使用:INDEXED BY indexname;

发表于 2017-09-05 15:56:57 回复(0)
在SQLite中:
SELECT * FROM salaries INDEXED BY idx_emp_no WHERE emp_no = 10005
在Mysql中:
create index idx_emp_no on salaries(emp_no);
select * from salaries FORCE INDEX (idx_emp_no) where emp_no = 10005;
解题思路:先创建索引,再创建强制索引查询,(题目这里默认已经创建索引)。索引名一定要加括号,否则错误。
强制索引:FORCE INDEX(<索引名>);
SELECT * FROM <表名>  FORCE INDEX (<索引名>)
编辑于 2019-11-30 16:54:45 回复(3)
【整体思路】两条语句:添加索引;查询时使用强制索引 force index
这里题目默认已经创建了索引,所以只需要提交一条语句。
【易错点】force index要紧跟from后面,写在where语句之前,否则会报错。
select *
from salaries 
force index(idx_emp_no)
where emp_no=10005;

发表于 2021-01-24 02:18:25 回复(1)
无语了,楼下一堆Mysql都过不了
SELECT * FROM salaries FORCE INDEX(idx_emp_no) WHERE emp_no = 10005;
发表于 2020-12-31 15:10:05 回复(3)
SELECT * FROM salaries INDEXED BY idx_emp_no WHERE emp_no = 10005
【解题】
先创建索引,再强制索引查找(读题发现题目中已创建索引):
CREATE INDEX idx_emp_no ON salaries(emp_no); SELECT * FROM salaries INDEXED BY idx_emp_no WHERE emp_no = 10005
在mysql中, force index
SELECT * FROM salaries FORCE INDEX idx_emp_no WHERE emp_no = 10005

发表于 2019-06-11 11:04:41 回复(2)
考点:使用索引进行查询
mysql: force index (index_name)   //注意:括号是必须的
select * from salaries
force index (idx_emp_no) where emp_no = 10005;


发表于 2021-03-27 11:48:49 回复(0)
/*create index idx_emp_no
on salaries(emp_no); 题目已经写了这条语句,所以这里不能重复写,否则通不过 */

select * from salaries
force index(idx_emp_no)
where emp_no = 10005;

/*强制索引:FORCE INDEX(<索引名>);
SELECT * FROM <表名>  FORCE INDEX (<索引名>)  */
发表于 2021-02-25 22:04:11 回复(1)
sqlLite 使用 indexed by 进行强制索引
mysql 使用 force index 进行强制索引
发表于 2017-11-12 09:27:05 回复(0)
select * from salaries 
force index(idx_emp_no)
where emp_no = '10005' ;
发表于 2022-04-16 15:42:22 回复(0)
后来,终于在眼泪中明白,有些人一旦失去就不在

select * from salaries  indexed by idx_emp_no where emp_no = 10005;
发表于 2018-07-11 19:20:55 回复(1)
select * from salaries  indexed by idx_emp_no where emp_no = 10005
indexed by :强制使用索引
发表于 2017-08-30 16:35:23 回复(0)
select *
from salaries
force index(idx_emp_no)
where emp_no=10005

发表于 2023-09-10 16:13:26 回复(0)
select * from salaries force index(idx_emp_no) where emp_no=10005;

评论区有些答案不对,因为 force index 后面必须、必须、必须加括号!!!
发表于 2023-02-23 14:54:51 回复(0)
SELECT
    *
FROM
    salaries FORCE INDEX (idx_emp_no)
WHERE 
    emp_no = "10005"

发表于 2021-10-18 23:56:01 回复(0)