首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请教一个查询过慢的问题. [无满意答案结贴]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • etnet
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-20 23:36:00 楼主
    select distinct n.id,n.headLine from news n
    inner join stocknewsrelation snr on snr.news_id=n.id
    inner join stock s on snr.stock_id=s.id
    inner join stockindexrelation sir on sir.stock_id=s.id
    inner join indexinfo i on sir.index_id=i.id
    where i.indexCode='HSI' and n.newsUpdateTime >= '2008-8-10'
    order by n.newsUpdateTime desc limit 5;

    相关的表有news,stock,indexinfo,stocknewsrelation,stockindexrelation五张表.
    外键都建立了索引,news的newsUpdateTime也建立了索引.
    但是查询速度执行的却很慢,后辍后relation的表是连接表.
    news到stock到indexinfo,都是多对多的关系.

    本以来是索引没建好,可是select id from news order by newsUpdateTime desc limit 5;
    速度很快14ms结束.
    news下大概有8W条数据.
    数据库是MySQL5.0,不知道那位能帮着找一下原因?

    25  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wildlily980
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 08:16:151楼 得分:0
    explain
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wwwwb
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 9

      10

      10

    发表于:2008-08-21 10:05:492楼 得分:0
    explain看看瓶颈在什么地方,TRY:
    select distinct n.id,n.headLine from news n
    inner join stocknewsrelation snr on (snr.news_id=n.id) and (n.newsUpdateTime >= '2008-8-10')
    inner join stock s on snr.stock_id=s.id
    inner join stockindexrelation sir on sir.stock_id=s.id
    inner join indexinfo i on (sir.index_id=i.id) and (i.indexCode='HSI')
    order by n.newsUpdateTime desc limit 5;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hrb2008
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:08:093楼 得分:0
    看到此问题忽然想到一个问题,借用楼主的地方。如果用了别名,索引及explain检索的相关字段会不会受影响,看成无索引结果集。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yangxiao_jiang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:18:284楼 得分:0
    应该不会受到影响。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jackyren007
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:54:135楼 得分:0
    索引是建立了.但是还要考虑个问题,写的where条件.具体还要看数据库是不是使用你建立的索引
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • etnet
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 21:50:376楼 得分:0
    在news这张表上我建立了个多列的索引newsKeyws (newsUpdateTime,keyword_id,id).
    可是explain后只使用了主键索引,并没有使用我定义的索引.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • etnet
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 22:01:097楼 得分:0
    根据2楼的语句, explain的结果是:

    select_type|table|type|possible_keys|key|key_len|ref|rows|Extra

    SIMPLE|i|ref|PRIMARY,indexCode|indexCode|768|const|1|Using where; Using index; Using temporary; Using filesort

    SIMPLE|sir|ref|PRIMARY,FKF3181788D5499B0,FKF318178C3CB64EC|FKF318178C3CB64EC|386|etnetchina.i.id|20|Using index

    SIMPLE|s|ref|PRIMARY|PRIMARY|386|etnetchina.sir.stock_id|2|Using index

    SIMPLE|snr|ref|PRIMARY,FK941DC02529C11B63,FK941DC0258D5499B0|FK941DC0258D5499B0|386|etnetchina.s.id|10|Using where; Using
    index

    SIMPLE|n|ref|PRIMARY,newskeys,newsIdkeys|PRIMARY|386|etnetchina.snr.news_id|1|Using where

    麻烦看一下问题出在那里,调试了好久.
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved