其中record表里有一条记录的信息属性(六项左右,包括名称等)以及关联联的版位表的positionId ,
版位表又有关联页面表的pageId和版位名称,
页面表包括关联channel表的channelId和频道名称,
频道表包括关联媒体表的meidumId和媒体名称。
我要查询的信息是某些符合在某个媒体、某个频道的所有记录,而且要显示出这条记录所在的版位、页面、频道、媒体的名称。
记录表中有几十万的记录数,版位表也有几千个记录,通过连表直接查询速度好慢,有没有其他比较好的方法查询?
我要能比较快速的查询方法.
10 个解决方案
#1
把你的查詢語句貼出來看看
#2
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=多少等信息,要是全搜索就是上面这个了.
之后where按查询条件还跟着mediumId=多少等信息,要是全搜索就是上面这个了.
#3
用left join来连接表,把数量少的放在最先查询的地方
#4
错,按照LZ的意思应该用 INNER JOIN
#5
left join 也不是什么情况下都效率高的
#6
就算左连接速度,记录太多了,难道就没有别的方法了?
#7
#8
考虑以下用临时表
#9
如何用临时表呢?
因为这个查询要经常用,所以那段连表的语句会经常使用的,就是(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)这个,
我本来想把所用的信息都建一个视图,就是用上面语句建的视图,然后查找视图里符合条件的语句,但是视图也是用的时候才连表的,速度基本没有快到,多建一个表又会数据冗余,出现修改是数据的不一致,现在都不知道怎么办。
因为这个查询要经常用,所以那段连表的语句会经常使用的,就是(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)这个,
我本来想把所用的信息都建一个视图,就是用上面语句建的视图,然后查找视图里符合条件的语句,但是视图也是用的时候才连表的,速度基本没有快到,多建一个表又会数据冗余,出现修改是数据的不一致,现在都不知道怎么办。
#10
你自己先EXPLAIN以下。看看这个连接是怎么用的。然后建立适当的索引。
#1
把你的查詢語句貼出來看看
#2
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=多少等信息,要是全搜索就是上面这个了.
之后where按查询条件还跟着mediumId=多少等信息,要是全搜索就是上面这个了.
#3
用left join来连接表,把数量少的放在最先查询的地方
#4
错,按照LZ的意思应该用 INNER JOIN
#5
left join 也不是什么情况下都效率高的
#6
就算左连接速度,记录太多了,难道就没有别的方法了?
#7
#8
考虑以下用临时表
#9
如何用临时表呢?
因为这个查询要经常用,所以那段连表的语句会经常使用的,就是(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)这个,
我本来想把所用的信息都建一个视图,就是用上面语句建的视图,然后查找视图里符合条件的语句,但是视图也是用的时候才连表的,速度基本没有快到,多建一个表又会数据冗余,出现修改是数据的不一致,现在都不知道怎么办。
因为这个查询要经常用,所以那段连表的语句会经常使用的,就是(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)这个,
我本来想把所用的信息都建一个视图,就是用上面语句建的视图,然后查找视图里符合条件的语句,但是视图也是用的时候才连表的,速度基本没有快到,多建一个表又会数据冗余,出现修改是数据的不一致,现在都不知道怎么办。
#10
你自己先EXPLAIN以下。看看这个连接是怎么用的。然后建立适当的索引。