這是一個簡單的問題 - 我只是找到了不同的答案,所以我不確定。讓我描述:LIMIT在JOIN之前或之後有效嗎?
如果您有疑問,像這樣的:
SELECT logins.timestamp, users.name
FROM logins
LEFT JOIN users
ON users.id = logins.user_id
LIMIT 10
這基本上將列出登錄表的最後10個條目,在JOIN的用戶名替換USER_ID。
現在我的問題是,當連接發生(所以它只加入前10個條目)或連接後LIMIT是否生效? (它會加入整個表格,然後刪除前10個條目)
我在問這是因爲示例表logins
將包含很多條目 - 而且我不確定連接是否太昂貴明智的。如果LIMIT只會發生10 JOIN,那不會是一個問題。
第二個問題是這樣的:如果添加了DISTINCT,功能是否一樣?它會在10個參賽作品中停止嗎?並且不,這不會被命令由命令
*這基本上會列出登錄表的最後** 10個條目* - 不,它不會。沒有'ORDER BY'子句=沒有保證的順序。 – DCoder
@Dcoder,但'默認'排序受表格插入的影響,對吧?所以,如果你認爲你永遠不會'更新'任何行,但只執行'INSERT',那麼順序將始終是INSERT順序,對嗎? - 對於這個問題,我只使用表格作爲歷史表格,稍後在沒有任何操作數據的情況下 – Katai
據我所知,每個供應商都可以按照他們認爲合適的方式實施默認排序,因此結果通常會根據到查詢中使用的任何索引 - 這種方式引擎不需要花費額外的時間來訂購。 – DCoder