mysql索引的疑問(wèn)
問(wèn)題描述
explain select * from t_warning where FIND_IN_SET(’214’,t_wuserid) and FIND_IN_SET(’214_0’,t_wkstatus) and ((t_wstatus=2 and unix_timestamp(t_wstarttime)<=1485313428 and unix_timestamp(t_wendtime)>=1485313428) or t_wstatus=1 or (t_wstatus=3 and t_week=3)) and FIND_IN_SET(’2’,t_wtype) order by t_createtime desc limit 50;
這條語(yǔ)句牽扯到的 where 條件的字段都加上了索引,為什么索引還是沒(méi)有起作用?如何改sql?這條sql感覺(jué)寫的不好。
問(wèn)題解答
回答1:FIND_IN_SET 是不會(huì)用到索引的呀,不知道索引類型是 FULL_TEXT 的是否能利用。
回答2:你這條語(yǔ)句查詢條件太復(fù)查,肯定是全表掃描,本人也不能寫出使用你這種情況的sql語(yǔ)句。建議,先將數(shù)據(jù)取出,再在 程序里做過(guò)濾
回答3:是否使用索引,mysql會(huì)感覺(jué)各個(gè)執(zhí)行計(jì)劃的整體進(jìn)行判定,不是說(shuō)查詢條件中的字段有索引就一定會(huì)用。
具體到你提到的sql語(yǔ)句,需要針對(duì)數(shù)據(jù)和and的各個(gè)條進(jìn)行分析,是否存在能夠大量過(guò)濾數(shù)據(jù)的條件(一般情況符合條件的記錄要小于表總記錄數(shù)的10%),然后針對(duì)這個(gè)條件的字段創(chuàng)建索引。
相關(guān)文章:
1. docker鏡像push報(bào)錯(cuò)2. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問(wèn)題3. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””4. docker - 如何修改運(yùn)行中容器的配置5. javascript - 請(qǐng)指條明路,angular的$event,在select中卻是undefined?6. java - 如何點(diǎn)擊按鈕,重新運(yùn)行(我是初學(xué)者)?7. html5和Flash對(duì)抗是什么情況?8. javascript - 在 model里定義的 引用表模型時(shí),model為undefined。9. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個(gè)是怎么回事????10. phpstudy8.1沒(méi)集成mysql-front

網(wǎng)公網(wǎng)安備