sql 优化问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 11:15:36
两个表,表A和表B 字段全一样 现在有人在数据库中写了一视图create view aa
as
select * from A
union
select * from B
查询了视图aa的数据量大约有几十万条
在这两个表中都有一个字段name 为nvrchar(200)型
我要非常频繁使用视图aa,根据name来查找值(当然在别的地方有对A表和B表非常频繁的插入,这样不管它了),差不多一秒种一次,这样对性能有很高的要求,请问怎样优化该视图

我有试着优化了一下
create function f_aa
(
@name nvarchar(200)
)
RETURNS TABLE
as

return (select * from A where name=@name
union
select * from B where name=@name)
但是效果不明显,有哪位指点下么

还有对大表非常频繁地操作,要怎样性能才能提高?

还有一个问题 一个表数据大约有上亿的数据量 这个表中有salary(工资),dDate(日期)两个字段 要求查询出 salary<5000 and dDate>'2009/10/1'
salary>5000 and dDate>'2009/10/1'
salary<5000 and dDate<'2009/10/1'
salary>5000 and dDate>'2009/10/1' 的人数
第二个问题我有答案了:
select count(*)
from
(select (case when salary>=5000 and dDate>='2009/10/5' then 'A'
wh

查询和插入的性能总是成反比的,现实的处理中,一般是根据需要,找到一个平衡点。
按你的要求,你优化表就可以了。以name字段建一个聚集索引,原来的聚集索引改为非聚集索引,相信速度会快上很多的。但是插入操作会比原来慢一些。