0
我有这个疑问:为何在查看中使用此查询时速度较慢?
SELECT * FROM
(
SELECT LASTNAME,NAME,STREET,PHONE,ID_CARD
FROM PHONES1..TVPHONES
UNION ALL
SELECT LASTNAME,NAME,STREET,PHONE,ID_CARD
FROM PHONES2..TVPHONES
UNION ALL
SELECT LASTNAME,NAME,STREET,PHONE,ID_CARD
FROM PHONES3..TVPHONES
) q
WHERE ID_CARD = 'B5XXXXXXX'
此查询需要0.03秒完成,但如果我转换成一个视图这一点,并执行相同的搜索:
ALTER VIEW [dbo].[BTPHONES]
AS
SELECT * FROM
(
SELECT LASTNAME,NAME,STREET,PHONE,ID_CARD
FROM PHONES1..TVPHONES
UNION ALL
SELECT LASTNAME,NAME,STREET,PHONE,ID_CARD
FROM PHONES2..TVPHONES
UNION ALL
SELECT LASTNAME,NAME,STREET,PHONE,ID_CARD
FROM PHONES3..TVPHONES
) q
GO
-- ------------------------
SELECT TOP 1 * FROM dbo.BTPHONES
WHERE ID_CARD = 'B5XXXXXXX'
需要大约3分钟!为什么需要这么长时间?
Plan01:
Plan02:
比较实际执行计划吗? –
我运行了CTRL + L.在第一种情况下,查询的大部分部分的成本为0%。相反,在第二种情况下,成本从40-60%变化到 – csotelo
@csotelo您应该将其作为回答发布 – Kermit