Table_F
id name
Table_K
id fid fkey
Table_F 大概有 20万行记录,Table_K大概有300万行记录
要查询 在 table_K fkey 中 同时包含 某几个key所对应的在 table_F 里面的行
怎么样效率才能高一点?
select top 100 f.name from [Table_F] as f
inner join (
SELECT count([fid]) as num, [fid]
FROM [Table_K]
where fkey like '%2010%' or fkey like '%2011%' or fkey like '%2012%' or fkey like '%2013%'
group by fid
having count([fid])>3
) as t on f.id = t.fid order by t.num desc ,f.id
这样写,需要2秒左右的时间
先explain 出执行计划,再根据具体情况添加索引
参考自:
MySQL怎样优化WHERE子句 http://www.data.5helpyou.com/article270.html
MySQL如何优化GROUP BY http://www.data.5helpyou.com/article237.html
mysql的话使用事物能不能好一点http://blog.csdn.net/u014629433/article/details/51555287