SQL视图相当慢.你认为这个观点有什么问题吗



我们已经创建了一个SQL视图。但是,当我查询视图时,返回一个条目需要10分钟以上。你觉得这个视图有什么问题吗?我们如何解决性能问题?是否有创建视图的最佳实践

CREATE VIEW [dbo].[vw_mytestview]
AS
SELECT        
Table1.SERVICE_LINE_DESCR, Table1.SUB_SERVICE_LINE_CD, 
Table1.SUB_SERVICE_LINE_DESCR, Table1.SL_COMPANY_ID, 
Table1.SL_DEPARTMENT_ID, Table1.SL_SUB_AREA, Table1.DELETE_FLAG, 
Table1.SL_RANK_CD, Table1.SL_RANK_DESCR, 
Table1.SL_COMM, Table1.EMPL_STATUS, Table1.GBL_ASSIGNEE_IND, 
Table1.SL_EXCL_INCL_FL, Table1.SL_MC_CTRY_2CHAR, 
Table1.SL_IND_SEGMENT_CD, Table1.SL_GD_STATUS, Table1.SL_DOMAIN, 
Table1.SL_MAILING_ADDR, Table1.SL_CODED_MAIL_ADDR, 
Table1.START_DATE, Table1.HIRE_DT, Table1.DATETIME_STAMP, 
Table2.samaccountname
FROM            
dbo.mytesttable AS Table1 
INNER JOIN
dbo.vw_otherone AS Table2 ON Table1.colum1 COLLATE DATABASE_DEFAULT = Table2.colum1 COLLATE DATABASE_DEFAULT
WHERE        
(Table2.samaccountname IS NOT NULL) 
AND (Table1.SL_DISPLAY_NAME IS NOT NULL) 
AND (Table1.SL_ACCOUNT_TYPE IS NOT NULL) 
AND (Table1.SL_FIRST_NAME IS NOT NULL) 
AND (Table1.SL_LAST_NAME IS NOT NULL) 
GO

这几乎是不可能的,因为您的视图引用了另一个视图。

然而,这种情况是高度可疑的:

ON Table1.GPN COLLATE DATABASE_DEFAULT = Table2.GPN COLLATE DATABASE_DEFAULT

更改排序规则可以防止使用索引。用作JOIN键的两列应该已经具有兼容的排序规则。如果没有,请修复您的数据模型!

而且,根据有多少字段是"空的",您可能能够更有效地进行筛选。然而,只有在WHERE条件删除了大量行的情况下,情况才会如此。

可以在键列上使用索引(存在于where条件中(,否则视图没有任何问题

最新更新