麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

Mysql中FIND_IN_SET()和IN區別簡析

2024-07-24 13:14:43
字體:
來源:轉載
供稿:網友

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

弄個測試表來說說兩者的區別,測試數據直接在問答區copy一份,能說明問題就行,哈哈,如果侵犯您的版權還請見諒,互聯網嗎,就需要分享!

測試代碼:  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`); 得到結果空值. test2:sql = select * from `test` where FIND_IN_SET('daodao',`list`); 得到三條數據。 

 

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

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

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

當然,這不是我們項目中需要將FIND_IN_SET替換為IN的原因,因為在我們項目中兩者都可以實現功能。只是IN比FIND_IN_SET性能高。我們要查詢的字段是主鍵,使用IN時會使用索引,只會查詢表中部分數據。FIND_IN_SET則會查詢表中全部數據,由于數據量比較大,性能肯定不高,所以替換為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就不只是比較是否相等了!

總結

以上就是本文關于Mysql中FIND_IN_SET()和IN區別簡析的全部內容,希望對大家有所幫助。歡迎大家留言交流討論,如有不足之處,小編會及時改正補充。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 性欧美极品xxxx欧美一区二区 | 国产一区二区视频观看 | 美女黄影院 | 欧美一区二区精品夜夜嗨 | 成人一级视频 | 午夜在线视频一区二区三区 | 国产精品视频在线观看免费 | 中国嫩模一级毛片 | 欧产日产国产精品99 | 国产精品久久久久久久av三级 | 原来神马影院手机版免费 | 草逼一区 | 日韩视频一区二区三区四区 | 高清国产午夜精品久久久久久 | 毛片在哪看 | 欧美成年人视频在线观看 | 黄色男女视频 | 成人一级视频在线观看 | 中文字幕在线观看二区 | 午夜视频在线看 | 久久久久久久久久久av | 精精国产xxxx视频在线野外 | av不卡毛片 | 欧美性受xxxx人人本视频 | 久久视频精品 | 免费看成人av | 欧美精品免费一区二区三区 | 亚洲无限资源 | 久久区二区 | 免费a视频在线观看 | 精品久久久一二三区播放播放播放视频 | av一道本| 亚洲αv | 亚洲乱搞 | 伊人网站 | 免费在线观看午夜视频 | av在线免费观看网址 | 精品国产一二区 | 欧美一级黄色网 | 极品国产91在线网站 | 在线成人免费网站 |