国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

mysql索引的疑問

瀏覽:186日期:2022-06-14 17:54:25

問題描述

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;

這條語句牽扯到的 where 條件的字段都加上了索引,為什么索引還是沒有起作用?如何改sql?這條sql感覺寫的不好。

問題解答

回答1:

FIND_IN_SET 是不會用到索引的呀,不知道索引類型是 FULL_TEXT 的是否能利用。

回答2:

你這條語句查詢條件太復查,肯定是全表掃描,本人也不能寫出使用你這種情況的sql語句。建議,先將數據取出,再在 程序里做過濾

回答3:

是否使用索引,mysql會感覺各個執行計劃的整體進行判定,不是說查詢條件中的字段有索引就一定會用。

具體到你提到的sql語句,需要針對數據和and的各個條進行分析,是否存在能夠大量過濾數據的條件(一般情況符合條件的記錄要小于表總記錄數的10%),然后針對這個條件的字段創建索引。

相關文章:
主站蜘蛛池模板: 西乌珠穆沁旗| 民权县| 左贡县| 西吉县| 四川省| 昌邑市| 民勤县| 阿合奇县| 四川省| 深圳市| 南澳县| 呼图壁县| 广宗县| 辛集市| 新营市| 南通市| 双辽市| 东辽县| 平南县| 信丰县| 盐津县| 镇江市| 仪陇县| 洮南市| 宜阳县| 旬阳县| 武宁县| 东乌珠穆沁旗| 郯城县| 深水埗区| 尚义县| 贵定县| 花莲市| 海原县| 彭山县| 惠安县| 克拉玛依市| 乌拉特中旗| 漳州市| 花莲县| 娱乐|