一、在mysql中, 只有右模糊才走索引的原因
在 MySQL 中,索引通常是針對列值的左側(cè)前綴進(jìn)行排序和存儲的。當(dāng)使用 LIKE 查詢語句時,如果使用“%”通配符在列值的左側(cè)進(jìn)行模糊匹配,那么 MySQL 將無法使用索引優(yōu)化查詢,而需要進(jìn)行全表掃描。因此,只有在 LIKE 查詢語句中,使用“%”通配符在列值的右側(cè)進(jìn)行模糊匹配時,MySQL 才能夠利用索引進(jìn)行優(yōu)化查詢,提高查詢效率。這是因為只有右側(cè)的列值前綴與查詢條件相匹配,MySQL 才能夠利用索引檢索相關(guān)的記錄,從而避免進(jìn)行全表掃描。
二、MySQL LIKE 子句
在 MySQL 中,LIKE 關(guān)鍵字主要用于搜索匹配字段中的指定內(nèi)容。其語法格式如下:
[NOT] LIKE '字符串'
解釋:
NOT :可選參數(shù),字段中的內(nèi)容與指定的字符串不匹配時滿足條件。字符串:指定用來匹配的字符串。“字符串”可以是一個很完整的字符串,也可以包含通配符。右模糊:范圍索引左模糊:不走索引,全表查詢LIKE 關(guān)鍵字支持百分號“%”和下劃線“_”通配符:
搭配%使用:%代表一個或多個字符的通配符,譬如查詢字段name中以大開頭的數(shù)據(jù):搭配_使用:_代表僅僅一個字符的通配符,把上面那條查詢語句中的%改為_,會發(fā)現(xiàn)只能查詢出一條數(shù)據(jù)。三、mysql常用查詢語句
1、LIKE的靈活運用
% :匹配一個或多個字符串 _ :匹配單個任意字符串 【】:中括號內(nèi)的單個字符匹配 【^ 】:非括號內(nèi)的單個字符匹配
2、分組查詢
GROUP BY +HAVING GROUP BY:用于分組,通常會與聚合函數(shù)(如max、sum、min、count等)搭配起來使用 HAVING:用于篩選,與where類似,但是一般會與GROUP BY搭配起來使用
3、子查詢
一般用in 、not in、exsit、not exsit將主查詢表與子表中的關(guān)聯(lián)字段做連接
4、取兩個表結(jié)果集中的差集
在oracle里面比較簡單,可以用minus 來直接取出兩個表的差集。在mysql里面沒有此類關(guān)鍵字可以用,相對來說查詢效率較高的,要用左連接的方式來查詢。
SELECT a.* FROM (SELECT * from malldb.mall_user_express_addr WHERE user_id=’53’ ) a LEFT JOIN (SELECT * FROM malldb.mall_user_express_addr WHERE address LIKE ‘%今天%’ ) b on a.id=b.id where b.id is null
5、分頁查詢
limit N,M 從N條開始到N+M條被取出 比如要取出第5頁的數(shù)據(jù),每頁顯示20條 select * from 表A limit 81,20
延伸閱讀1:MySQL
MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是較好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。