簡體   English   中英

如何有效檢查SQL查詢中是否存在記錄?

[英]How can I efficiently check if records exists with sql query?

用戶場景如下。

我的申請有公司清單。 每個公司都有一個唯一的號碼(電話號碼)分配給它。

使用Google的API服務,該應用程序可以提取可能已經注冊到我的應用程序或未注冊到我的應用程序的公司。

因此,從API調用中,我想通過從應用程序中搜索電話號碼來刪除已經注冊的公司。 API調用的結果將小於20。

  1. 最少考慮的方法是通過遍歷API結果來檢查是否包含電話號碼的記錄,這將花費O(n)個SQL查詢。 (我不確定是否將電話號碼列編入索引並且n小於或等於20都不重要)

  2. 使用具有nor比較項的單個查詢,從API結果中獲取具有電話號碼中任何一個的公司,然后通過遍歷查詢結果來“過濾”出這些公司。

您是否認為第二種方法最終將不得不在“過濾”過程的最壞情況下比較O(n ^ 2)次?

解決此問題的最佳實踐是什么?

我在MySQL上使用Ruby on Rails 3&ActiveRecord。

如果您使用field IN (n1, n2, n3)並且該field被索引覆蓋-那么您將獲得O(lgN)復雜度,而M * O(lgN)在第一個中(實際上,只要您說M就是沒有意義的)只有不到20個元素)

暫無
暫無

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

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