最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql中FIND_IN_SET()和IN區(qū)別簡析

 更新時間:2017年10月13日 14:41:50   作者:JavaDynamic  
這篇文章主要介紹了Mysql中FIND_IN_SET()和IN區(qū)別簡析,設計實例代碼,具有一定參考價值。需要的朋友可以了解。

前段時間項目中使用到Mysql的FIND_IN_SET函數(shù),感覺挺好用的。過一段時間,老大找到我說,這個需要改為IN,哈哈,只能改了,原因會在下面分析到!

弄個測試表來說說兩者的區(qū)別,測試數(shù)據(jù)直接在問答區(qū)copy一份,能說明問題就行,哈哈,如果侵犯您的版權(quán)還請見諒,互聯(lián)網(wǎng)嗎,就需要分享!

測試代碼:  
CREATE TABLE `test` ( 
 `id` int(8) NOT NULL auto_increment, 
 `name` varchar(255) NOT NULL, 
 `list` varchar(255) NOT NULL, 
 PRIMARY KEY (`id`) 
) 
INSERT INTO `test` VALUES (1, 'name', 'daodao,xiaohu,xiaoqin'); 
INSERT INTO `test` VALUES (2, 'name2', 'xiaohu,daodao,xiaoqin'); 
INSERT INTO `test` VALUES (3, 'name3', 'xiaoqin,daodao,xiaohu'); 
test1:sql = select * from `test` where 'daodao' IN (`list`); 
得到結(jié)果空值. 
test2:sql = select * from `test` where FIND_IN_SET('daodao',`list`); 
得到三條數(shù)據(jù)。 

拿上面的實驗數(shù)據(jù)說話,test1得到的結(jié)果為空,為什么呢?因為,mysql中In是比較等不等,此處‘list'是表中的一個字段,也就是變量,除非它的值剛好和name的值一樣,否則返回的結(jié)果都為空。拿test1來說,也即把‘daodao'改為‘daodao,xiaohu,xiaoqin'才會匹配到第一條記。

test2返回三條數(shù)據(jù),可能是我們剛好需要的。mysql中FIND_IN_SET函數(shù)用來比較是不是包含,不管‘list'字段是變量或給定的字符串常量都能很好的工作。MySQL中原型為:FIND_IN_SET(str,strlist)。 假如字符串str 在由N 子鏈組成的字符串列表strlist 中,則返回值的范圍在 1 到 N 之間。

一個字符串列表就是一個由一些被‘,'符號分開的子鏈組成的字符串。如果第一個參數(shù)是一個常數(shù)字符串,而第二個是type SET列,則   FIND_IN_SET() 函數(shù)被優(yōu)化,使用比特計算。 如果str不在strlist 或strlist 為空字符串,則返回值為 0 。如任意一個參數(shù)為NULL,則返回值為 NULL。這個函數(shù)在第一個參數(shù)包含一個逗號(‘,')時將無法正常運行。str也可以是變量,比如表中的一個字段。

當然,這不是我們項目中需要將FIND_IN_SET替換為IN的原因,因為在我們項目中兩者都可以實現(xiàn)功能。只是IN比FIND_IN_SET性能高。我們要查詢的字段是主鍵,使用IN時會使用索引,只會查詢表中部分數(shù)據(jù)。FIND_IN_SET則會查詢表中全部數(shù)據(jù),由于數(shù)據(jù)量比較大,性能肯定不高,所以替換為IN。想看查詢部分還是全部,可以使用EXPLAIN即解釋功能查看,如果是部分則type為range(范圍),全部則type為ALL(全部),還有個type是const,常量級的,呵呵。。。

最佳實踐:

1、如果待查詢的條件是常量那就使用IN,是變量則使用FIND_IN_SET,可以使用索引的,貌似,哈哈。

2、如果使用IN和FIND_IN_SET都能滿足條件,則最好使用IN,理由同上,特別是查詢字段為主鍵時或有索引時。

3、如果使用IN不能滿足功能需求,那只能使用FIND_IN_SET了,哈哈,有時候說不定IN中條件加個%號也可以解決問題,加個%號IN就不只是比較是否相等了!

總結(jié)

以上就是本文關于Mysql中FIND_IN_SET()和IN區(qū)別簡析的全部內(nèi)容,感興趣的朋友可以參閱:MySQL數(shù)據(jù)庫表分區(qū)注意事項大全【推薦】、幾個比較重要的MySQL變量、sql和MySQL的語句執(zhí)行順序分析等,希望對大家有所幫助。歡迎大家留言交流討論,如有不足之處,小編會及時改正補充。

相關文章

  • Ubuntu18.04安裝mysql5.7.23的教程

    Ubuntu18.04安裝mysql5.7.23的教程

    這篇文章主要為大家詳細介紹了Ubuntu18.04安裝mysql5.7.23的教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • MySQL函數(shù)Locate的使用詳解

    MySQL函數(shù)Locate的使用詳解

    本文主要介紹了MySQL函數(shù)Locate的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • MySQL千萬不要這樣寫update語句

    MySQL千萬不要這樣寫update語句

    MySQL中update語句用于更新表中的現(xiàn)有數(shù)據(jù),亦可用UPDATE語句來更改表中單個行,一組行或所有行的列值,這篇文章主要給大家介紹了關于MySQL千萬不要這樣寫update語句的相關資料,需要的朋友可以參考下
    2021-11-11
  • mysql中#{}和${}的區(qū)別詳解

    mysql中#{}和${}的區(qū)別詳解

    本文主要介紹了mysql中#{}和${}的區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • CentOS8下MySQL 8.0安裝部署的方法

    CentOS8下MySQL 8.0安裝部署的方法

    這篇文章主要介紹了CentOS 8下 MySQL 8.0 安裝部署的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • MySQL數(shù)據(jù)庫全量備份+增量備份的實現(xiàn)

    MySQL數(shù)據(jù)庫全量備份+增量備份的實現(xiàn)

    本文介紹了通過全量備份和增量備份實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的安全,并通過cron定時任務自動進行備份,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2026-03-03
  • mysql8.0?.ibd文件恢復表結(jié)構(gòu)的實現(xiàn)

    mysql8.0?.ibd文件恢復表結(jié)構(gòu)的實現(xiàn)

    本文主要介紹了mysql8.0?.ibd文件恢復表結(jié)構(gòu)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-10-10
  • MySQL定期整理磁盤碎片的方法實現(xiàn)

    MySQL定期整理磁盤碎片的方法實現(xiàn)

    磁盤碎片是指文件在磁盤上分散存儲的情況,這可能導致磁盤讀寫速度下降、空間浪費等問題,本文主要介紹了MySQL定期整理磁盤碎片的方法實現(xiàn),感興趣的可以了解一下
    2024-02-02
  • mysql字符集和校對規(guī)則(Mysql校對集)

    mysql字符集和校對規(guī)則(Mysql校對集)

    字符集的概念大家都清楚,校對規(guī)則很多人不了解,一般數(shù)據(jù)庫開發(fā)中也用不到這個概念,mysql在這方便貌似很先進,大概介紹一下
    2012-07-07
  • mysql事務處理用法與實例代碼詳解

    mysql事務處理用法與實例代碼詳解

    這篇文章主要介紹了mysql事務處理用法與實例代碼詳解,詳細的介紹了事物的特性和用法并實現(xiàn)php和mysql事務處理例子,非常具有實用價值,需要的朋友可以參考下
    2018-12-12

最新評論

阿合奇县| 平塘县| 图木舒克市| 曲松县| 保德县| 宁蒗| 邻水| 峡江县| 南京市| 武乡县| 太原市| 钦州市| 泸溪县| 河东区| 达孜县| 济源市| 富阳市| 门源| 忻城县| 金山区| 大英县| 奉新县| 永昌县| 九江县| 浑源县| 即墨市| 葵青区| 蚌埠市| 吴旗县| 阿荣旗| 新干县| 县级市| 屯门区| 富裕县| 兴安县| 神木县| 丰原市| 抚顺县| 洪泽县| 文昌市| 黄陵县|