这两个案例的指数是多少?
A)
SELECT p.content, u.name
FROM posts p, admins a, users u
WHERE
p.tag = a.tag and
a.id = u.id and
p.content = 'Hello World';
B)
SELECT u.name, p.date
FROM users u, posts p
WHERE
u.userid = p.userid and
p.content = 'Hello World';
我尝试通过逐个创建不同的索引来了解性能如何受到影响。对于每个新索引,查询运行得更快,但是在删除它们之后,获得的性能仍然存在。所以最后,我无法比较。
答案 0 :(得分:0)
从不在FROM
子句中使用逗号。 始终使用正确的JOIN
语法。
所以,写下这样的查询:
SELECT p.content, u.name
FROM posts p JOIN
admins a
ON p.tag = a.tag JOIN
users u
ON a.id = u.id
WHERE p.content = 'Hello World';
和
SELECT u.name, p.date
FROM posts p JOIN
users u
ON u.userid = p.userid
WHERE p.content = 'Hello World';
最好的索引在
posts(content, tag)
admins(tag, id)
users(id, name)
posts(content, userid, date)
users(userid, name)
不幸的是,每个表都没有匹配这些查询的索引。他们使用不同的列。