[英]How can I make a query force to use such an index?
我有这样的查询:
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)
。 那么如何才能强制使用第一个索引? cookies(cookie, user_id)
如果cookie
是唯一索引,则使用第一个索引没有任何好处。 如果SELECT
中的任何列来自cookies
表,则尤其如此。
无论如何,如果cookie
是唯一的,则基本上是以下处理:
第一个索引可能能够消除第二个提取。 但是,唯一索引提供的其他信息可能会平衡这一点-无论哪种方式,查询都应该非常快。
使用FORCE INDEX(您的索引)
http://dev.mysql.com/doc/refman/5.7/zh-CN/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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.