我有这样的查询:
BachelorsDegrees
我也有这些索引:
SELECT u.id, user_fname, user_lname, reputation, email, events
FROM users u
INNER JOIN cookies c ON u.id = c.user_id
WHERE c.cookie = $token
- 这是正常索引cookies(cookie, user_id)
- 这是一个独特的索引当我在上面执行查询(以及cookies(cookie)
)时,它会使用第二个索引:EXPLAIN
。那我怎么能强制使用第一个索引呢? cookies(cookie)
答案 0 :(得分:2)
如果cookie
是唯一索引,则使用第一个索引没有任何优势。如果SELECT
中的任何列来自cookies
表,则尤其如此。
在任何情况下,如果cookie
是唯一的,那么基本上处理是:
第一个索引可能能够消除第二次获取。但是,唯一索引提供的附加信息可能会平衡这一点 - 无论如何,查询应该非常快。
答案 1 :(得分:1)
使用FORCE INDEX(your_index)
http://dev.mysql.com/doc/refman/5.7/en/index-hints.html
SELECT u.id, user_fname, user_lname, reputation, email, events
FROM users u
INNER JOIN cookies c ON u.id = c.user_id
FORCE INDEX (your_index)
WHERE c.cookie = $token