视图查询慢,如何优化

花样小星 2011-10-19 10:22:50
以下语句是我建立的一个视图,其中关联了4个表的数据。distinct后是18000多行数据。但是查询出来需要10以上的时间
请问我可以用什么办法来加快查询速度?

貌似这种视图不能建立索引。报错:无法对视图 'v_detail' 创建 索引。它没有唯一聚集索引。

因为视图是为了方便多个表联表查询是而设的,所以视图也是多个表中的字段由各个表中的关联关系二创建的一种虚拟表。
它不存在与实际的数据库存储空间中。因此不能创建索引

SELECT DISTINCT
A.invname, A.invpinpai, A.invspec, REPLACE(A.invtype, ',', ' ') AS invtype, B.measname, A.pk_invcl, A.pk_corp, A.pk_invbasdoc, F.fullname,
E.cbuyer
FROM dbo.nw_inv AS A INNER JOIN
dbo.v_nw_measdoc AS B ON A.pk_measdoc = B.pk_measdoc INNER JOIN
dbo.v_nw_ic_onhandnum AS C ON C.cinvbasid = A.pk_invbasdoc AND C.pk_corp = A.pk_corp INNER JOIN
dbo.v_nw_stordoc AS D ON D.pk_stordoc = C.cwarehouseid AND C.pk_corp = D.pk_corp LEFT OUTER JOIN
dbo.v_nw_inv_position AS E ON E.pk_invbasdoc = A.pk_invbasdoc LEFT OUTER JOIN
dbo.sys_user AS F ON F.Nc_UserID = E.cemployeeid
...全文
666 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanzhouqi 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 me_meihuo 的回复:]

引用 2 楼 fredrickhu 的回复:
可以建立唯一聚集索引。

加完索引数据查询会变快吗?还有别的方法吗?
[/Quote]在视图上面建索引 正规一点。
其他方法也有,需要改数据库结构,对于一个已经是生产环境的系统来说事不可能的事情
花样小星 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fredrickhu 的回复:]
可以建立唯一聚集索引。
[/Quote]
加完索引数据查询会变快吗?还有别的方法吗?
--小F-- 2011-10-19
  • 打赏
  • 举报
回复
可以建立唯一聚集索引。
--小F-- 2011-10-19
  • 打赏
  • 举报
回复
---索引视图

索引视图是具体化的视图

--创建索引视图
create view 视图名 with schemabinding
as
select 语句
go

---创建索引视图需要注意的几点
1. 创建索引视图的时候需要指定表所属的架构
--错误写法
create view v_f with schemabinding
as
select
a.a,a.b,b.a,b.b
from
a join b
on
a.id=b.id
go

---正确写法:
create view v_f with schemabinding
as
select
a.a,a.b,b.a,b.b
from
dbo.a join dbo.b
on
a.id=b.id
go


2.在创建索引视图的select语句时,不使用*,必须指定具体的列名
--错误写法
create view v_f with schemabinding
as
select
*
from
dbo.a join dbo.b
on
a.id=b.id
go

---正确写法
create view v_f with schemabinding
as
select
a.a,a.b,b.a,b.b
from
dbo.a join dbo.b
on
a.id=b.id
go

3.在创建索引视图的select 语句中,不能存在重复的列名,这个不举例了

4. 只能为索引视图创建唯一聚集索引
--正确的写法
create unique clustered index ix_uniquetb on v_tb
go

--错误的写法
create clustered index ix_uniquetb on v_tb
go
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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