Mysql 我这样的多表查询如何提高速度 ?

XFliangwh 2007-12-12 03:28:43
我的系统有五个表,记录表(record),版位表(position),页面表(page),频道表(channel)和媒体表(medium)
其中record表里有一条记录的信息属性(六项左右,包括名称等)以及关联联的版位表的positionId ,
版位表又有关联页面表的pageId和版位名称,
页面表包括关联channel表的channelId和频道名称,
频道表包括关联媒体表的meidumId和媒体名称。

我要查询的信息是某些符合在某个媒体、某个频道的所有记录,而且要显示出这条记录所在的版位、页面、频道、媒体的名称。




记录表中有几十万的记录数,版位表也有几千个记录,通过连表直接查询速度好慢,有没有其他比较好的方法查询?
我要能比较快速的查询方法.
...全文
305 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒得去死 2007-12-18
  • 打赏
  • 举报
回复
你自己先EXPLAIN以下。看看这个连接是怎么用的。然后建立适当的索引。
XFliangwh 2007-12-18
  • 打赏
  • 举报
回复
如何用临时表呢?

因为这个查询要经常用,所以那段连表的语句会经常使用的,就是(select mediumname,channelname,pagename,posistionname,recordname form record,position,page,channel,medium where position.positionId=record.positionId and position.pageId=page.pageId and page.channelId=channel.channelId and channelId.mediumId=medium.mediumId)这个,

我本来想把所用的信息都建一个视图,就是用上面语句建的视图,然后查找视图里符合条件的语句,但是视图也是用的时候才连表的,速度基本没有快到,多建一个表又会数据冗余,出现修改是数据的不一致,现在都不知道怎么办。

懒得去死 2007-12-18
  • 打赏
  • 举报
回复
考虑以下用临时表
XFliangwh 2007-12-13
  • 打赏
  • 举报
回复
就算左连接速度,记录太多了,难道就没有别的方法了?
懒得去死 2007-12-12
  • 打赏
  • 举报
回复
left join 也不是什么情况下都效率高的
  • 打赏
  • 举报
回复
错,按照LZ的意思应该用 INNER JOIN
yangxiao_jiang 2007-12-12
  • 打赏
  • 举报
回复
用left join来连接表,把数量少的放在最先查询的地方
XFliangwh 2007-12-12
  • 打赏
  • 举报
回复
select mediumname,channelname,pagename,posistionname,recordname form record,position,page,channel,medium where position.positionId=record.positionId and position.pageId=page.pageId and page.channelId=channel.channelId and channelId.mediumId=medium.mediumId;

之后where按查询条件还跟着mediumId=多少等信息,要是全搜索就是上面这个了.
daisylh 2007-12-12
  • 打赏
  • 举报
回复
把你的查詢語句貼出來看看

56,875

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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