永发信息网

mysql 多表查询优化

答案:3  悬赏:40  手机版
解决时间 2021-03-06 08:01
我是个 新手 我现在有30张表(没办法 就是需要这么多表 不能整合) 表的结构都是一样的 我现在要根据一定的条件然后读取出30条记录 并且按照日期把查询出来的结果进行排序 我现在用的查询语句类似
select * from (select a,b,c,date1 from biao1 where a="已售" order by date1)as t1
union all
select * from (select a,b,c,date1 from biao2 where a="已售" order by date1)as t1
union all
select * from (select a,b,c,date1 from biao3 where a="已售" order by date1)as t1
union all
select a,b,c,date1 from biao4 where a="已售" order by date1
然后 一直到 第30个表 我想问下 有哪位高手有方式优化下我的语句 或者有别的方法啊 特急 感激不尽啊。

select * from (select a,b,c,date1 from biao1 where a="已售" and b="轿车" order by date1 limit 30)as t1
union all
select * from (select a,b,c,date1 from biao2 where a="已售" and b="轿车" order by date1 limit 30)as t1
union all
select * from (select a,b,c,date1 from biao3 where a="已售" and b="轿车" order by date1 limit 30)as t1
union all
select a,b,c,date1 from biao4 where a="已售" and b="轿车" order by date1 limit 30
刚刚的语句有点错误 大概 就是这样的。就是 不知道 这个怎么去优化 数据库或者代码或者其他什么的 就是优化下查询 速度啦 。。。因为我现在的话这样查询的话 会很慢 我建立了一个 (b,date1)的索引 可是还是很慢的感觉
最佳答案
优化语句很简单:自定义函数帮您忙
先自定义一个函数,执行一次:
create function fun_tb(@fClass varchar(50))
return @Mytable table
(
a varchar(50) ,
b char(30),
c varcher(20)
)
as
begin
insert into @Mytable
select * from (select a,b,c,date1 from biao1 where a=@fClass order by date1 limit 30)as t1
union all
select * from (select a,b,c,date1 from biao2 where a=@fClass order by date1 limit 30)as t1
union all
select * from (select a,b,c,date1 from biao3 where a=@fClass order by date1 limit 30)as t1
union all.....................
return
end

上面..............是省略你的30表的语句,你不能省
以后在程序中调用时,只要写:
select * from dbo.Mytable('已售')
就行了
全部回答
没有办法,你可以尝试一下把每个语句的order by去掉,这样会加快速度的,你也可以把这些语句做到一个视图里,这样方便些,但你这个语句已经没法改的更简洁了,好运
两个表中id相同,username和adduser是相同的。对吧? select tablea.* from tablea left join on tablea.id=tableb.tableaid where tablea.type=1 and tableb.username='admin' ===== left join是左联 from aaa,aaa这表是主表 left join bbb on ccc bbb这表是副表, ccc是条件,一定要两个表中都存在同样的数据才可进行这样的联结 ===== 查询字段在两个表都有数据,则都显示 主表有数据,副表没有,副表字段为空的值显示为null 主表没有数据,就不会显示。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
1 Uplay是什么? 2 和steam有什么区别? 3 刺
太原如何找到便宜的楼盘信息?
同样君权神授,为什么欧洲会教皇比皇帝大,中
华盛汉舍卫浴地址在哪,我要去那里办事
看看吧是什么意思
2011年常州房价走势?
谢谢 你也一样 用英文怎么说
【密度与质量的关系】液体的密度与其质量的关
求eggy hab文文!打包~~
个人与公司申请流动资金贷款哪个更快
通化县市场监督管理局英额布市场监督管理所在
USB发展历史有哪些
莞尔一笑的意思
香港熊仔头微电影《一天》男声插曲,歌词中有
匆匆表示分别的一个字
推荐资讯
拉琼陇巴在哪里啊,我有事要去这个地方
丹霞地貌的特点是什么,还有哪些地貌?有何区别
宝马wbafe410是全时四驱吗
小厨房特色护心锅我想知道这个在什么地方
注意缺陷多动障碍的介绍
中国移动通信观音井加盟店在哪里啊,我有事要
新疆阿克苏怎么样
为什么说起来容易,做起来很难?
哪些经典歌曲适合初中特长生看高中?我唱歌时
吉隆坡到马六甲要多久
岔路口酒吧在哪里啊,我有事要去这个地方
中国电信狗场营业厅地址有知道的么?有点事想
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?