[英]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.