问题描述
- mysql查询优化求解决·
-
像这样一条sql,要查的表数据量大概在90W+ 在where 的第一个条件很快··但是并列到第二个and条件就非常慢··到三个条件查下来基本得3分钟左右···下面是sqlSELECT
DISTINCT Pid,
OrgName,
orgCode,
bCompetentOrg,
bEmployees,
b0rgTypeName,
bRegType,
becoType,
bIndustry,
AddressIDName,
bCertificateDate,
bRepresent
FROM
OLegal_temp o
WHERE
1=1AND 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