2013-07-14 59 views
0

我翻譯一個節目形式的python java和我在某些時候與MySQL我怎麼能實現haskey()函數在mysql中

工作,我有我的數據庫來檢查,如果我有一個查詢數據與一個特殊的鍵。 假設

if(namesTable.haskey(24)) 
    doSoemthing(); 

不知從DB我只是想看看是否有與這個特殊的鍵或沒有什麼需要任何檢索到的數據。此外,我不想使用COUNT,因爲使用計數意味着要通過所有的數據庫,並給我一個像248的數字,而我只是在乎如果有或沒有。

我希望能夠在數據庫中找到匹配項時立即給我一個信息。

+0

如果您的表格已正確編制索引,那麼查詢現有密鑰將不會「遍歷所有數據庫」。 – Brian

+1

像'SELECT 1 FROM table WHERE key = value'一樣檢查結果的數量。 –

回答

0

(我解釋了「檢查我的分貝,如果我有一個特殊的關鍵數據」意味着你檢查單個表中的一列是否存在一個特定的值,這似乎是。最簡單的解釋)

如果您需要檢查表,看看是否在特定的表中存在一行,與特定列的特定價值,最有效的查詢可能是:

SELECT 1 
    FROM DUAL 
WHERE EXISTS (SELECT 1 
       FROM mytable t 
       WHERE t.key = 24 
      ) 

僞表格DUAL保證返回不超過一行,而EXISTS subquer只要找到一行,y就會以TRUE「退出」。

爲了獲得最佳性能,您需要一個以鍵爲主鍵的索引,例如,

ON mytable (key) 
0

我會建議在應用程序中使用標誌,如:

Boolean hasKey = false; 
  1. 在你的程序的啓動,你需要對namesTable運行SQL查詢只是一次檢查它具有特殊的關鍵,並根據該查詢結果設置了hasKey。從那時起,你不需要再次檢查數據庫,你可以簡單地使用:

    if(hasKey) soSomething(); }

  2. namesTable添加/記錄的更新,檢查是否有專用鑰匙,如果是,則設置hasKey標誌true