免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3741 | 回复: 11
打印 上一主题 下一主题

请教如何优化这个SQL语句 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-20 14:51 |只看该作者 |倒序浏览
SELECT
    COUNT(DISTINCT tblA.person) AS personNum  -- VARCHAR(25)
FROM
    tableA tblA
    INNER JOIN tableB tblB USING (recType, year, num)   
WHERE tblB.req_id = '';

说明:recType, year, num是tableA主键中的3个,还有个seqeunceID。这个表大概有450万条数据。
执行的时候,用到了recType, year, num所组成的索引。
       对于tableB,主键是
req_id,用到了主键的索引。这个表大概会有3000条数据

上面这个语句花费如下
——# Query_time: 39  Lock_time: 0  Rows_sent: 1552  Rows_examined: 7927

请问这个语句应该优化!

谢谢gogo407 的提醒
explain的结果如下

id
select_type table typepossible_keys key key_len ref rows Extra
1
SIMPLE
tblB
ref
PRIMARY
PRIMARY
150
const
3621
Using where
1 SIMPLE tblA ref PRIMARY,
ind_req_type_year
ind_req_type_year 26 tblB.recType,
tbleB.year,
tbleB.num
1


[ 本帖最后由 dynastyzhao 于 2007-12-21 10:25 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-12-20 21:07 |只看该作者
这个问题困扰我好几天了
请大家多多帮忙

论坛徽章:
0
3 [报告]
发表于 2007-12-20 23:07 |只看该作者
把explain的结果也贴出来,大家都比较忙,不可能花太多时间在别人的问题上。
要不然,你这个问题只有石沉大海了

论坛徽章:
0
4 [报告]
发表于 2007-12-21 13:22 |只看该作者
req_id 是主键为什么会有空白数据?是外键吧。

如果是 INNER JOIN 的话,干脆就用对应的WHERE 条件替换,然后用上所有查询条件的聚合索引好了。

论坛徽章:
0
5 [报告]
发表于 2007-12-21 13:31 |只看该作者
原帖由 sunnyfun 于 2007-12-21 13:22 发表
req_id 是主键为什么会有空白数据?是外键吧。

如果是 INNER JOIN 的话,干脆就用对应的WHERE 条件替换,然后用上所有查询条件的聚合索引好了。


数据库引擎用的是MyISAM,所以没有外键。
还有为什么说有·空白数据·呢,我没有明白什么意思,请指教。
另外,如果不用JOIN,而是直接在WHERE里面
        tblA.recType = tblB.recType
AND tblA.year       = tblB.year
AND tblA.num       = tblB.num


那个效率更高呢
请大家指教

论坛徽章:
0
6 [报告]
发表于 2007-12-21 20:10 |只看该作者
MYSQL 中INNER JOIN和普通的连接是一个意思。

论坛徽章:
0
7 [报告]
发表于 2007-12-21 20:11 |只看该作者
问一下你是用什么工具测试的?

论坛徽章:
0
8 [报告]
发表于 2007-12-21 20:47 |只看该作者
呵呵。这个格式肯定是mysql记录慢查询的日志

论坛徽章:
0
9 [报告]
发表于 2007-12-22 09:21 |只看该作者
原帖由 angeljyt 于 2007-12-21 20:47 发表
呵呵。这个格式肯定是mysql记录慢查询的日志



我的一个慢查询日志有300多M。
一打开看看里面全是INSERT和UPDATE语句。
NND

论坛徽章:
0
10 [报告]
发表于 2007-12-22 21:48 |只看该作者
原帖由 angeljyt 于 2007-12-21 20:47 发表
呵呵。这个格式肯定是mysql记录慢查询的日志


呵呵,就是slow_query_log,好像是这么拼写的。

[ 本帖最后由 dynastyzhao 于 2007-12-22 21:55 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP