簡體   English   中英

檢查記錄是否存在的最快方法

[英]Fastest way of checking whether a record exists

當我知道主鍵時,檢查記錄是否存在的最快方法是什么? selectcountfilterwhere或其他什么東西?

您可以通過EXPLAIN QUERY PLAN進行檢查,該計划將告訴您費用和對特定查詢的打算。

成本不會在運行之間直接進行比較,但是您應該對是否存在主要差異有一個不錯的了解。

話雖這么說,我希望COUNT(id) FROM table WHERE table.id="KEY"可能是理想的,因為它將利用任何部分查找功能(特別是在諸如亞馬遜紅移之類的列數據庫中快速查找)和主鍵索引。

使用count ,即使找到了記錄,數據庫也必須繼續搜索,因為可能存在第二個記錄。 因此,您應該搜索實際記錄,並告訴數據庫在第一個記錄之后停止。

當您要求從記錄中返回數據時,數據庫必須從表中讀取該數據。 但是,如果可以通過在索引中查找ID來找到記錄,則該表訪問將是多余的。 因此,除了用於搜索的ID外,您什么都不應該返回:

SELECT id FROM MyTable WHERE id = ? LIMIT 1;

無論如何,使用EXISTS時隱含不讀取實際數據和限制,這在peewee中更簡單:

SELECT EXISTS (SELECT * FROM MyTable WHERE id = ?);
MyTable.select().where(MyTable.id == x).exists()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM