为什么像这样的东西不起作用?
mysql> SELECT * FROM employees FORCE INDEX(emp_no) WHERE emp_no = '77899';
这里的桌子是这样的:
+------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| emp_no | int(11) | NO | PRI | NULL | |
| birth_date | date | NO | | NULL | |
| first_name | varchar(14) | NO | | NULL | |
| last_name | varchar(16) | NO | | NULL | |
| gender | enum('M','F') | NO | | NULL | |
| hire_date | date | NO | | NULL | |
+------------+---------------+------+-----+---------+-------+
6 rows in set (0.01 sec)
我得到的错误是:
ERROR 1176 (42000): Key 'emp_no' doesn't exist in table 'employees'
发布于 2013-10-06 03:10:37
仅仅因为emp_no是主键的名称,并不意味着它就是索引的名称。
每个提示都需要索引的名称,而不是列的名称。主键的名称是主键。若要查看表的索引名,请使用显示索引。http://dev.mysql.com/doc/refman/5.1/en/index-hints.html
代之而行
mysql> SELECT * FROM employees FORCE INDEX(PRIMARY) WHERE emp_no = '77899';
发布于 2013-11-15 21:09:39
我认为这是在抱怨(非常无助),因为您正在对已经是索引的东西执行强制索引。一定要做SHOW INDEXES FROM <<tablename>>
。您不应该需要强制索引子句。
发布于 2022-01-05 09:21:45
您可以首先通过此查询将其添加到索引列表中。
ALTER TABLE employees ADD INDEX emp_no (emp_no);
https://stackoverflow.com/questions/19205004
复制相似问题