mysql查询优化求解决·

像这样一条sql,要查的表数据量大概在90W+ 在where 的第一个条件很快··但是并列到第二个and条件就非常慢··到三个条件查下来基本得3分钟左右···下面是sql

SELECT
DISTINCT Pid,
OrgName,
orgCode,
bCompetentOrg,
bEmployees,
b0rgTypeName,
bRegType,
becoType,
bIndustry,
AddressIDName,
bCertificateDate,
bRepresent
FROM
OLegal_temp o
WHERE
1=1

AND o.OrgName LIKE '西安%'
AND o.orgDateFrom = '2010-06-08'
AND o.orgDateTo = '2015-06-10' LIMIT 5

求大神解决下···

偶没有大神帮忙看看呢···

能不能先查出一个and中的条件,然后当成一张表,再从这之中再查。这样会快点吗
比如

SELECT ... FROM (SELECT ... FROM WHERE o.OrgName LIKE '西安%')t WHERE t.orgDateFrom = '2010-06-08'

这样搜索,能不断的缩小搜索范围
当然,这样搜索出来的结果,还能再作为一张表,继续缩小范围

用group by 替代 distinct 会快一点

如果查询后的结果集比较大(去年limit 5),采用distinct的话,可能消耗的资源比较大,你先去掉distinct试试
另:可以根据OrgName、orgDateFrom、orgDateTo建几个索引,试试


 SELECT DISTINCT Pid,
                OrgName,
                orgCode,
                bCompetentOrg,
                bEmployees,
                b0rgTypeName,
                bRegType,
                becoType,
                bIndustry,
                AddressIDName,
                bCertificateDate,
                bRepresent
  FROM OLegal_temp o
 WHERE     1 = 1
       AND o.OrgName LIKE '西安%'
       AND o.orgDateFrom = '2010-06-08'
       AND o.orgDateTo = '2015-06-10'
 LIMIT 5