mysql三个inner join 的查询加时间倒排序后速度超慢

Henry.6 2005-08-23 06:03:12
SELECT
reso.RId,
reso.RTitle,
know.KName
column.CName,
format.FName
FROM
know
INNER JOIN reso ON (know.RId=reso.RId)
INNER JOIN column ON (reso.CId = column.CId)
INNER JOIN format ON (reso.Fid=format.Fid)
ORDER BY
reso.RLastupdate DESC
LIMIT 100
//根据最后更新时间排序,最新的排在前。 reso 有28万记录,column 有250条,format 有26条 know有28万条

查询时间花了68秒
去掉其中一个inner join查询速度0.5秒
mysql三维数据查询这么差吗?(PS:csdn的mysql版不能进)
...全文
1013 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Henry.6 2005-08-25
  • 打赏
  • 举报
回复
to konhon(优华):
SELECT
reso.RId,
reso.RTitle,
know.KName
column.CName,
format.FName
FROM reso,know, column, format
where know.RId=reso.RId and reso.CId = column.CId and reso.Fid=format.Fid
ORDER BY reso.RLastupdate DESC
根据这个来查询,结果有28万条速度80.36秒,加limit 100后44.53秒
-----------------------------------------------------------------
SELECT
reso.RId,
reso.RTitle,
know.KName
column.CName
FROM reso, know, column
where know.RId=reso.RId and reso.CId = column.CId
ORDER BY reso.RLastupdate DESC
根据这个来查询,结果有28万条速度25.76秒,加limit 100后0.53秒
hqhhh 2005-08-25
  • 打赏
  • 举报
回复
建立以reso.RLastupdate的索引 ,并以DESC 方式排序,
速度可能会更快一些!
其实SQL的查询分析器有时也很奇怪的,执行同样的脚本,第一次执行时,可能要50秒,再次执行时,可能只需要10,不知大家有没有碰到这种情况!

to :konhon(优华)
這就奇怪啦, 樓主用的是內聯接, 照各表的記錄來看得出的結果記錄數不會超過250條呀.
----------
你是怎么分析的呢,结果记录数为何不会超过250条呀!!!
Henry.6 2005-08-25
  • 打赏
  • 举报
回复
to hqhhh(枫叶) :我试过你的查询语句,快了点44.53秒。
konhon 2005-08-25
  • 打赏
  • 举报
回复
//根据最后更新时间排序,最新的排在前。 reso 有28万记录,column 有250条,format 有26条 know有28万条

去掉INNER JOIN column ON (reso.CId = column.CId)和column.CName, 或者
去掉INNER JOIN format ON (reso.Fid=format.Fid)和format.FName

這就奇怪啦, 樓主用的是內聯接, 照各表的記錄來看得出的結果記錄數不會超過250條呀.
你換Left Join或Right Join試試.
或者把各表的順序調換試試.
Henry.6 2005-08-25
  • 打赏
  • 举报
回复
to ALL: 已经建索引了。

to: konhon(优华):去掉INNER JOIN column ON (reso.CId = column.CId)和column.CName, 或者
去掉INNER JOIN format ON (reso.Fid=format.Fid)和format.FName

konhon 2005-08-23
  • 打赏
  • 举报
回复
hqhhh(枫叶) 兄, 你的連接其實就是inner join

樓主你加了LIMIT 100語句, 又用了Order by LIMIT 語句作用好像不大啦.

想問一下:去掉其中一个inner join速度會變快, 是去掉哪一個inner join呀
cdsgajxlp 2005-08-23
  • 打赏
  • 举报
回复
建了索引
konhon 2005-08-23
  • 打赏
  • 举报
回复
建索引吧.
hqhhh 2005-08-23
  • 打赏
  • 举报
回复
建了索引没有!
应该不是吧
改为这样试试:
SELECT
reso.RId,
reso.RTitle,
know.KName
column.CName,
format.FName
FROM know, reso, column, format
where know.RId=reso.RId and reso.CId = column.CId and reso.Fid=format.Fid
ORDER BY reso.RLastupdate DESC

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧