我在我的代码中看到了这个查询:
INSERT INTO comments (post_id, user_id, table_code, content, author_id, pinged_id, date_time)
SELECT ?,?,?,?,?,?,?
FROM qanda qa, users u
WHERE qa.id=? and author_id IS NULL
limit 1;
我已经在上面写过了查询..现在我相信, user u
在我的查询中是多余的。我对吗?
你知道我为什么问这个问题吗?因为我的所有代码背后总有一个原因。现在我不记得写这个, users u
的原因是什么。这就是我担心删除它的原因。
无论如何,删除, users u
会有什么变化吗?还是完全多余的?
答案 0 :(得分:2)
由于author_id
属于qanda
表,因此对users
表的隐式连接没有任何意义。事实上,它是一个交叉连接,因为没有连接条件,这意味着它可能是一个真正的性能生长。您可以尝试使用以下简化的INSERT
语句:
INSERT INTO comments (post_id, user_id, table_code, content, author_id,
pinged_id, date_time)
SELECT ?,?,?,?,?,?,?
FROM qanda qa
WHERE qa.id=? AND author_id IS NULL
LIMIT 1
但这并没有解释users
表首先在那里做什么。也许你从其他人(或其他东西)那里继承了这个查询,并且一次使用连接是出于正当理由。无论如何,现在就可以轻松取消债务。