![](/img/trans.png)
[英]PYTHON: What is the fastest way of checking and editing an element in a structured array if it exists?
[英]Fastest way of checking whether a record exists
當我知道主鍵時,檢查記錄是否存在的最快方法是什么? select
, count
, filter
, where
或其他什么東西?
您可以通過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.