表达式列是否影响查询性能

loworth 2008-02-01 10:23:09
[CODE=SQL]
/* 比如*/
CREATE TABLE [tbA]
(
[aId] INT UNIQUE,
[aName] NVARCHAR(20)
)
GO
CREATE FUNCTION [fn_GetNameById]
(@aId INT)RETURNS NVARCHAR(20)
AS
BEGIN
DECLARE @aName NVARCHAR(20)
SELECT @aName=[aName] FROM [tbA] WHERE [aId]=@aId
RETURNS(@aName)
END
GO
CREATE TABLE [tbB]
(
[bId] INT PRIMARY KEY,
[aId] INT,
[aName] AS dbo.fn_GetNameById([aId])--表达式列
)
GO
/*如上所示 或者 表达式列更复杂
会不会在查询的时候对性能影响
也就是说 这个表达式列是存储在数据文件中还是类似视图那样在查询时候现算出来的
*/
SELECT * FROM [tbB]
[/CODE]
...全文
101 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogocsgogodn 2008-02-01
  • 打赏
  • 举报
回复
以我目前的水平,个人认为在进行插入操作的时候有些影响,插入的时候
先把[bId],[aId]插入,然后才执行函数
插入之后 SELECT * FROM [tbB] 觉得相当于
select [bId],[aId],[aName] from tbB
还是等待专家来解答好了 呵呵
loworth 2008-02-01
  • 打赏
  • 举报
回复
OK 那结贴了
qqhmitzk 2008-02-01
  • 打赏
  • 举报
回复
查询插入都有些影响
--
从哲学角度来说
昵称被占用了 2008-02-01
  • 打赏
  • 举报
回复
快过年了,人有点少
loworth 2008-02-01
  • 打赏
  • 举报
回复
还有异议的没?
loworth 2008-02-01
  • 打赏
  • 举报
回复
感谢赐教
纯探讨话题!
那么表达式列究竟是在插入时受影响还是在查询时候受影响呢?
如果受影响,那么不查询那表达式列会不会受影响?
昵称被占用了 2008-02-01
  • 打赏
  • 举报
回复
看来说错了
是查询的时候性能呢个是有影响的
SELECT * FROM [tbB]
相当于
SELECT bid,aid,dbo.fn_GetNameById([aId]) as aName FROM [tbB]



free1879 2008-02-01
  • 打赏
  • 举报
回复
有和没有是肯定影响的,有的情况下,跟等值的查询差不多!
昵称被占用了 2008-02-01
  • 打赏
  • 举报
回复
这个想法有点意思
性能好像是对插入的时候有影响,查询的时候好像很少

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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