mysql 判斷記錄是否存在方法比較
更新時間:2011年08月09日 16:54:53 作者:
把數(shù)據(jù)寫入到數(shù)據(jù)庫的時,常常會碰到先要檢測要插入的記錄是否存在,然后決定是否要寫入。
我這里總結(jié)了判斷記錄是否存在的常用方法:
sql語句:select count(*) from tablename;
然后讀取count(*)的值判斷記錄是否存在。對于這種方法性能上有些浪費,我們只是想判斷記錄記錄是否存在,沒有必要全部都查出來。
以下這個方法是我推薦的。
sql語句:select 1 from tablename where col = col limit 1;
然后讀取語句執(zhí)行所影響的行數(shù)。
當(dāng)然這里limit 1很重要。這要mysql找到一條記錄后就不會在往下找了。這里執(zhí)行所影響的行數(shù)不是0就是1,性能提高了不少。
如果你用的是PDO,可以用rowCount(),很容易就都到執(zhí)行所影響的行數(shù)。
這里還有人可能會去讀取sql語句查詢到的記錄,然后判斷記錄是否存在,從而判斷記錄是否存在。這個方法雖然可行,但對于我們的要求來說,還是有些浪費,我們不需要查詢到的記錄,所有性能上會有損失。這里不推薦。
sql語句:select count(*) from tablename;
然后讀取count(*)的值判斷記錄是否存在。對于這種方法性能上有些浪費,我們只是想判斷記錄記錄是否存在,沒有必要全部都查出來。
以下這個方法是我推薦的。
sql語句:select 1 from tablename where col = col limit 1;
然后讀取語句執(zhí)行所影響的行數(shù)。
當(dāng)然這里limit 1很重要。這要mysql找到一條記錄后就不會在往下找了。這里執(zhí)行所影響的行數(shù)不是0就是1,性能提高了不少。
如果你用的是PDO,可以用rowCount(),很容易就都到執(zhí)行所影響的行數(shù)。
這里還有人可能會去讀取sql語句查詢到的記錄,然后判斷記錄是否存在,從而判斷記錄是否存在。這個方法雖然可行,但對于我們的要求來說,還是有些浪費,我們不需要查詢到的記錄,所有性能上會有損失。這里不推薦。
您可能感興趣的文章:
相關(guān)文章
MySQL優(yōu)化之大字段longtext、text所生產(chǎn)的問題
本文主要介紹了MySQL優(yōu)化之大字段longtext、text所生產(chǎn)的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05mysql kill進程后出現(xiàn)killed死鎖問題及解決
這篇文章主要介紹了mysql kill進程后出現(xiàn)killed死鎖問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01Windows8下mysql 5.6.15 安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了Windows8下mysql 5.6.15 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09MySQL essential版本和普通版本有什么區(qū)別?
安裝mysql的朋友可能會發(fā)現(xiàn)有時候我們看到essential版本,究竟與其它mysql版本有什么區(qū)別呢,這里簡單介紹下2013-06-06MySQL JOIN關(guān)聯(lián)查詢的原理及優(yōu)化
這篇文章主要介紹了MySQL JOIN關(guān)聯(lián)查詢的原理及優(yōu)化,文章圍繞主題展開詳細(xì)的內(nèi)介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08mysql數(shù)據(jù)庫常見的優(yōu)化操作總結(jié)(經(jīng)驗分享)
這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫常見的優(yōu)化操作,文章總結(jié)的都是個人日常開發(fā)使用mysql數(shù)據(jù)庫的經(jīng)驗所得,其中包括Index索引、少用SELECT*、EXPLAIN SELECT以及開啟查詢緩存等相關(guān)資料,相信會對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-04-04