关于mysql set字段类型的模糊查询问题
有个40万条的测试数据表
flag set('r', 'l', 'c', 'p')
SELECT a. * , b.typedir
FROM mzrui_archives a
LEFT JOIN mzrui_kind b ON a.kid = b.uid
WHERE a.flag LIKE '%p%'
AND a.kid
IN ( 3, 17, 18 )
ORDER BY a.uid
LIMIT 0 , 15
这个语句查询需要2.5秒的时间,把like去掉后查询相当快,不知道怎么优化,求教。
uid是主键
key kid(kid,flag) 索引
[解决办法]
既然是set,为何要like查询? find_in_set('p',a.flag)
[解决办法]
find_in_set('p',a.flag) and find_in_set('c',a.flag)