MySQL Server version: 5.0.95
Tables All: InnoDB
Run Code Online (Sandbox Code Playgroud)
我遇到了MySQL数据库查询的问题.基本上我发现如果我索引一个特定的varchar(50)字段tag.name,我的查询需要更长的时间(x10)而不是索引字段.我正试图加快这个问题,但是我的努力似乎反效果.
罪魁祸首线和领域似乎是:
WHERE `t`.`name` IN ('news','home')
Run Code Online (Sandbox Code Playgroud)
我注意到,如果我tag直接查询表没有使用相同条件和名称字段索引的连接,我没有问题..它实际上按预期更快.
示例查询**
SELECT `a`.*, `u`.`pen_name`
FROM `tag_link` `tl`
INNER JOIN `tag` `t`
ON `t`.`tag_id` = `tl`.`tag_id`
INNER JOIN `article` `a`
ON `a`.`article_id` = `tl`.`link_id`
INNER JOIN `user` `u`
ON `a`.`user_id` = `u`.`user_id`
WHERE `t`.`name` IN ('news','home')
AND `tl`.`type` = 'article'
AND `a`.`featured` = 'featured'
GROUP BY `article_id`
LIMIT 0 , 5
Run Code Online (Sandbox Code Playgroud)
使用索引**进行说明
| id | select_type | table | type | possible_keys | …Run Code Online (Sandbox Code Playgroud)