为什么这样的事情不起作用?
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'
答案 0 :(得分:1)
因为emp_no是主键的名称并不意味着它是索引的名称。
每个提示都需要索引的名称,而不是列的名称。 PRIMARY KEY的名称是PRIMARY。要查看表的索引名称,请使用SHOW INDEX。 http://dev.mysql.com/doc/refman/5.1/en/index-hints.html
改为执行此操作
mysql> SELECT * FROM employees FORCE INDEX(PRIMARY) WHERE emp_no = '77899';
答案 1 :(得分:0)
我认为这是抱怨(非常无益),因为你正在对已经是索引的东西做强制索引。请确保SHOW INDEXES FROM <<tablename>>
。你不应该需要强制索引子句..