分析為什麼mysql中like模糊查詢效率低
相比update和insert,一般查詢應該是資料庫中操作最頻繁的。而在有些應用場景需要用到like模糊查詢,那麼對於大資料,查詢的時候就要注意了。
現在來分析一下為什麼like語句查詢的效率會很低,測試資料共4000000條,如下圖:
第一步:不使用索引
下圖可以看出,不使用索引的時候普通查詢與like查詢的耗時相當,like略長,這也是必然的,因為它要進行額外的演算法。
第二步:使用索引
如下圖,使用索引後,普通查詢的耗時基本算是秒查,非常快;而like查詢還是耗時一秒多。
第三步:分析原因
如下圖,用explain分析一下,此時我們立刻明白了,普通查詢用到了索引,但是like語句沒有用到索引。
所以,照成mysql中like查詢效率低下的原因是:
最後,補充一下,like語句有時候也是可以用到索引的,如下圖,如果我們查詢的時候寫成“like 'dd_'或者like 'dd%'”,這樣是可以用到索引的,此時的查詢速度也會相對的快一點。雖然快了一點,但是還是比普通查詢耗時要多很多。
因此,當表的資料量比較大的時候,儘量還是不要用like語句了。如果想做模糊搜尋,建議用搜索引擎,比如solr,這樣會比like強大n倍。
相關推薦
分析為什麼mysql中like模糊查詢效率低
相比update和insert,一般查詢應該是資料庫中操作最頻繁的。而在有些應用場景需要用到like模糊查詢,那麼對於大資料,查詢的時候就要注意了。現在來分析一下為什麼like語句查詢的效率會很低,測試資料共4000000條,如下圖:第一步:不使用索引下圖可以看出,不使用索引的時候普通查詢與like查詢的耗時
mysql中like模糊查詢的優化
這是我在一個百萬級資料庫資料匯出遇到的問題 比如這個語句在這個資料庫查詢很慢: select a from tms where b like ‘%haha%’ order by time limit 100; 第一種優化方法(注意:這種方法只適用於haha開頭的): //將haha欄位和
mysql中對於模糊查詢like的一些總結
1、常見用法: (1)搭配%使用 %代表一個或多個字元的萬用字元,譬如查詢欄位name中以大開頭的資料: (2)搭配_使用 _代表僅僅一個字元的萬用字元,把上面那條查詢語句中的%改為_,會發現只能查詢出下面一條資料: 2、使用like模糊查詢會導致索引失效,在資料量大
mysql 優化 - like模糊查詢優化
在使用msyql進行模糊查詢的時候,很自然的會用到like語句,通常情況下,在資料量小的時候,不容易看出查詢的效率,但在資料量達到百萬級,千萬級的時候,查詢的效率就很容易顯現出來。這個時候查詢的效率就顯得很重要! 一般情況下like模糊查詢的寫法為(field已建立索引): SE
mybatis中LIKE模糊查詢的幾種寫法以及注意點
mybatis中對於使用like來進行模糊查詢的幾種方式: (1)使用${...} 注意:由於$是引數直接注入的,導致這種寫法,大括號裡面不能註明jdbcType,不然會報錯 org.mybatis.spring.MyBatisSystemException: nested
Oracle中like模糊查詢及萬用字元
like 模糊查詢 我們只知道個別字母或者欄位,不太確定要查詢的準確資訊時,可以使用模糊查詢(即like),查詢出所有與自己已知的"零碎"資訊有關的全部資訊。 這就要用的like模糊查詢了,其萬用字
Mybatis中like模糊查詢
需求:使用模糊查詢,查詢出年齡在23至27之間員工資訊? 員工表:t_user 1.使用mysql進行sql查詢 select * from t_user where u_name like 'et
python中的mysql數據庫like模糊查詢
script art exec -m con python abc san exe 近期工作在使用python語言開發項目,工作中遇到了一個python連接mysq
mysql中使用like模糊查詢時如何轉義%
我們經常使用like語句配合%%萬用字元來進行模糊查詢,那麼如果欄位內容本身含有%,而你要查詢包含有%的記錄怎麼辦呢怎麼辦呢。假設欄位是title,那麼下面的語句可以嗎? select * from table where title like “%%%”; 如果你試過就知
mysql 千萬級數據查詢效率實踐,分析 mysql查詢優化實踐--本文只做了一部分,僅供參考
open ges -a 效率 2萬 https ini class cnblogs 數據量, 1300萬的表加上112萬的表 註意: 本文只做了部分優化,並不全面,僅供參考, 歡迎指點. 請移步tim查看,因為寫的時候在tim寫的,粘貼過來截圖有問題,就直接上鏈接了.
mybatis xml檔案中的大於、小於、及like模糊查詢的寫法
在xml中,特殊符號的轉義寫法如下: < < > > <> <> & & &
Mysql 多表聯合查詢效率分析及優化
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
mysql正則表示式,實現多個欄位匹配多個like模糊查詢
現在有這麼一個需求 一個questions表,欄位有題目(TestSubject),選項(AnswerA,AnswerB,AnswerC,AnswerD,AnswerE) 要求欄位不包含png,jpg,jpeg,gif 正常情況下會這麼寫 select * from questions
Mysql多表聯合查詢效率分析優化
1. 多表連線型別 1. 笛卡爾積(交叉連線) 在MySQL中可以為CROSS JOIN或者省略CROSS即JOIN,或者使用’,’ 如: SELECT * FROM table1 CROSS JOIN table2SELECT * FROM table1 JOIN
用charindex代替like中的%提高查詢效率
如: select * from [table1] where [field1] like ‘%test%’ 可以用如下語句代替: select * from [table1] where charindex('test', [field1]) > 0
正確認識SQL Server中的模糊查詢LIKE
目錄 SQL Server中的模糊查詢LIKE 在SQL Server中,當我們想實現模糊查詢時,可能我們首先想到的是使用LIKE語句,其次是使用全文搜尋(即Full-Text Search),如下所示是通過LIKE語句對錶Person.Email
ibatis中使用like模糊查詢
轉自:https://www.cnblogs.com/gaojing/archive/2013/01/04/2844932.html無效的方法:select * from table1 where name like '%#name#%' 兩種有效的方法: 1) 使用$代
Mybatis中的模糊查詢like
原文:https://blog.csdn.net/u010963948/article/details/53232419<!-- oracle --> <select id="searchUserBySearchName" parameterType="ja
mybatis mapper介面中使用@select 註解 @select中使用模糊查詢like
不使用concat會出現 Parameter index out of range (1 > number of parameters, which is 0)這個錯誤 正確示例:
mybatis中使用模糊查詢like 和使用in條件
下面舉例在mybatis中如何偷懶使用like和in 條件 1 使用模糊查詢 like 在java類中準備好 String name="%"+user.getName+"%"; .直接傳入到mappe