Mysql sql模糊查詢,sql優化日常

2021-09-25 23:09:12 字數 1328 閱讀 6668

mysql 1、模糊查詢          2、聯表查詢優化

1、模糊查詢

like

select * from ms_fans where nick_name like 『%demo%』 limit 0,100

like 『%xx%』 不能使用索引

like 『xx%』 可使用字段索引,查詢效率快

locate同樣不能使用索引,40萬資料中查詢效率與like相差無幾

position同樣不能使用索引

除了like 'xx%'可使用索引,查詢效率最快,其他幾個模糊查詢,效率都差不多

2、統計sql優化

前景:以一表為主表,關聯其他子表進行統計查詢,表資料量大(百萬)

(主表百萬) 查詢時進行時間排序等系列操作

思路:關聯查詢時,進行排序等操作,mysql會在聯表查詢完畢後,進行排序等操作,使用explain解析sql,可以看到,查詢完畢後,進行時間等排序,還會對主表進行全表掃瞄,導致sql執行非常慢。

select * from *** order by xx

單標進行排序查詢時,資料量百萬級這個sql也很快。

因此,可以在聯表查詢之前,先根據條件,查詢出主表-單錶資料作為虛擬表,再進行聯表查詢

例:select * from

(select id from table limit 12) as foo

left join table2 tb on foo.xx = tb.xx

使用explain sql分析可見,再進行聯表查詢時,主表不再全表掃瞄

sql 模糊查詢

一般模糊語句如下 select 字段 from 表 where 某欄位 like 條件 其中關於條件,sql提供了四種匹配模式 1,表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請使用兩個百分號 表示。比如 select from user where u name lik...

SQL模糊查詢

sql提供了四種匹配模式 1.表示任意 0個或多個字元。如下語句 select from user where name like 三 將會把 name為 張三 三腳貓 唐三藏 等等有 三 的全找出來 2.表示任意單個字元。語句 select from user where name like 三 ...

SQL模糊查詢

sql提供了四種模糊匹配方式 1,表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請運用兩個百分號 表示。比如 select from user where u name like 三 將會把u name為 張三 張貓三 三腳貓 唐三藏 等等有 三 的記錄全找出來。另外,如果...