免费注册 查看新帖 |

Chinaunix

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

MySQL交叉查询难以置信的慢, 请教高人 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-15 17:45 |只看该作者 |倒序浏览
50可用积分
公司的一个项目, 打算从Access转到MySQL. 想不到转了以后执行某些查询惊人的慢.
可以排除是连接方式的事情, 我直接在mysql里面执行查询效率也一样, 可以排除是机器的问题, 我换了两台机器, 我在公司的工作机P4  2.8G/1G内存要1400多秒, 我家里的机器, AMD4400+ X2,要300秒左右.我试过使用各个版本的my.ini, 没有好转.

原本在Access里面结果基本是瞬间出来的, 原Access库也没有做过index.所有的交叉查询速度都下降了.

请MySQL高人救我....我当时拍着胸脯跟PM说转到MySQL有种种好处, 现在居然来这么一下.

贴个查询的例子在下面, 数据库非常小. 不到1w条纪录, 这个搜索的结果也很少, 40多条吧. 如果有热心人想重现,我可以发给你.sql文件, 12M, 压缩以后700k. 先谢谢高人了.

MySQL版本是5.1

SELECT distinct tsl.TestSuiteID, tsl.TestSuiteName, tsl.TPrefix,
                tps.ID, tcp.TestCaseID, tpl.Name, tpl.Version,
                tps.Name AS ScriptName, tps.Version AS ScriptVersion
                      FROM TEST_CASE_PROCEDURE tcp,
                           TEST_PROCEDURE_LABEL tpl,
                           TEST_PROCEDURE_SCRIPT tps,
                           EVENT_SCRIPT es,
                           TEST_EVENT te,
                           TEST_CASE tc,
                           TEST_SUITE_LIST tsl,
                           PROJECT p
                     WHERE tcp.ID = tps.TestCaseProcedureID
                       AND tpl.ID = tcp.TestProcedureLabelID
                       AND es.TestProcedureScriptID = tps.ID
                       AND te.TestEventID = es.TestEventID
                       AND tc.TestCaseID = tcp.TestCaseID
                       AND tsl.TestSuiteID = tc.TestSuiteID
                       AND te.ProjID = p.ProjectID
                       AND p.CoreID = 11
                  ORDER BY tcp.TestCaseID, tpl.Name, tpl.Version DESC,
                           tps.Name, tps.Version


[ 本帖最后由 zfol_510 于 2008-3-15 18:58 编辑 ]

dunbed sql.zip

1.31 MB, 下载次数: 68

.sql 数据文件

最佳答案

查看完整内容

TYPE 全是ALL.一个索引都不见,肯定会非常的慢!!!!而且你还这么多表做连接。

论坛徽章:
0
2 [报告]
发表于 2008-03-15 17:45 |只看该作者
原帖由 zfol_510 于 2008-3-15 18:45 发表
附Explain的结果

id select_type    table type possible_keys key key_len ref rows filtered  Extra
1 SIMPLE           p       ALL    \N                   \N   \N          \N 5       100.00  Usin ...




TYPE 全是ALL.

一个索引都不见,肯定会非常的慢!!!!

而且你还这么多表做连接。

论坛徽章:
0
3 [报告]
发表于 2008-03-15 17:47 |只看该作者
厄, 对. 都是在本机的开发环境里面执行的. 连接都是1. 肯定不是Server 负载的问题

论坛徽章:
0
4 [报告]
发表于 2008-03-15 17:52 |只看该作者
用explain检查慢在哪里

论坛徽章:
0
5 [报告]
发表于 2008-03-15 17:56 |只看该作者
建立索引了吗?

论坛徽章:
0
6 [报告]
发表于 2008-03-15 18:27 |只看该作者
回两位.
1. 使用Explain查看, 最多的那个表的纪录不超过300个, 不知道如何优化
2. 没建索引, 原始的Access数据库就不包含任何索引. 通过Explain查看, 这个查询涉及的表中每有4,5个表的纪录达到300个左右, 其他的都不到100个. 个人认为200/300个纪录还不应该导致这种速度. 如果要建索引, 请问如何建比较合理?

谢谢

论坛徽章:
0
7 [报告]
发表于 2008-03-15 18:39 |只看该作者
才1W多的记录建索引应该是没什么效果,能把原数据给我看看

论坛徽章:
0
8 [报告]
发表于 2008-03-15 18:45 |只看该作者
附Explain的结果

id select_type    table type possible_keys key key_len ref rows filtered  Extra
1 SIMPLE           p       ALL    \N                   \N   \N          \N 5       100.00  Using where; Using temporary; Using filesort
1 SIMPLE           te      ALL    \N                   \N   \N          \N 8       100.00  Using where; Using join buffer
1 SIMPLE           tpl     ALL    \N                   \N   \N          \N 38     100.00  Using join buffer
1 SIMPLE           tsl     ALL    \N                   \N   \N          \N 58     100.00  Using join buffer
1 SIMPLE           tps    ALL    \N                   \N   \N          \N 220   100.00  Using join buffer
1 SIMPLE           tcp    ALL    \N                   \N   \N          \N 221   100.00  Using where; Using join buffer
1 SIMPLE           tc      ALL     \N                   \N   \N          \N 233   100.00  Using where; Distinct; Using join buffer
1 SIMPLE           es     ALL     \N                   \N   \N          \N 299   100.00  Using where; Distinct; Using join buffer

论坛徽章:
0
9 [报告]
发表于 2008-03-15 18:59 |只看该作者
已上传附件, 谢谢Jason

论坛徽章:
1
双子座
日期:2013-08-19 14:56:16
10 [报告]
发表于 2008-03-16 12:49 |只看该作者
你这样的查询,不死才怪,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP