这里是我的查询:什么是投票表的最佳索引?
SELECT qa.id,
qa.subject,
qa.category cat,
qa.keywords tags,
qa.body_html,
qa.amount,
qa.visibility,
qa.date_time,
COALESCE(u.reputation, 'N') reputation,
COALESCE(CONCAT(u.user_fname, ' ', u.user_lname), 'unknown') name,
COALESCE(u.avatar, 'anonymous.png') avatar,
(SELECT COALESCE(sum(vv.value),0)
FROM votes vv
WHERE qa.id = vv.post_id
AND 15 = vv.table_code) AS total_votes,
(SELECT COALESCE(sum(vt.total_viewed),0)
FROM viewed_total vt
WHERE qa.id = vt.post_id
AND 15 = vt.table_code
LIMIT 1) AS total_viewed
FROM qanda qa
LEFT JOIN users u ON qa.author_id = u.id
AND qa.visibility = 1
WHERE qa.type = 0
ORDER BY qa.date_time DESC
LIMIT 0,
11;
这里是EXPLAIN
结果:
看到了吗?最后一行(vv
)不会使任何索引受益。而且,这里是在votes
表中的当前索引:
总之,什么是你的建议吗?我需要什么指数才能使表现更好?
表的表决是否包含大量的数据或大量的共货币?你为什么不在柱子post_id的VOTE上添加PK,那么你在post_id上有唯一的数据和索引,你可以在post_id和table_code上添加索引,因为你在where条件中选择ti – Moudiz
另外,LIMIT 1似乎是多余 – Strawberry