wlb315153 2016-06-07 06:09 采纳率: 0%
浏览 1022

关于SQL查询效率的问题

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秒左右的时间

  • 写回答

2条回答 默认 最新

  • yicp123 2016-06-07 07:45
    关注

    先explain 出执行计划,再根据具体情况添加索引

    参考自:
    MySQL怎样优化WHERE子句 http://www.data.5helpyou.com/article270.html

    MySQL如何优化GROUP BY http://www.data.5helpyou.com/article237.html

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable