मेरे पास एक एक XML फ़ील्ड के आधार पर कॉलम जारी है, और जब मैं इस तालिका से पूछता हूं तो SQL सर्वर हमेशा "गणना स्केलर" का उपयोग करता है। क्यूं कर? क्या यह जारी नहीं है?जब मैं एक सतत गणना वाले कॉलम को चुनता हूं तो SQL सर्वर "गणना स्केलर" क्यों करता है?
मुझे संदेह है कि मैं ऐसी कोई शर्त नहीं कर रहा हूं जो कॉलम को वास्तव में कायम रखे। मैं वास्तव में "गणना अदिश" कॉल से बचने के लिए हर सुझाव की सराहना करेंगे
create FUNCTION [dbo].[FuncTestPersisted] (@xml XML)
RETURNS int
WITH SCHEMABINDING
AS
BEGIN
RETURN @xml.value('(/node/@value)[1]','int')
END
create TABLE test_TB(
[ID] [int] NOT NULL,
[CustomProps] [xml] NULL,
[TestPersisted] AS ([dbo].[FuncTestPersisted]([CustomProps])) PERSISTED,
CONSTRAINT [PK_test_TB] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
: यह मेरा तालिका (और funtion आप कायम स्तंभ बनाने की जरूरत है)। कृपया, ट्रिगर्स का उपयोग किए बिना (प्रत्येक गणना वाले कोलम के लिए एक ट्रिगर ....... बहुत अधिक काम है;))
मैंने इस तालिका के साथ भी प्रयास किया है, और क्वेरी निष्पादन योजना अभी भी "गणना स्केलर" दिखाती है कहता है। क्यूं कर?
create TABLE [dbo].[test_TB](
[ID] [int] NOT NULL,
[CustomProps] [xml] NULL,
[TestPersisted] AS (5*ID) PERSISTED,
CONSTRAINT [PK_test_TB] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
[यह उत्तर] (http://stackoverflow.com/a/5999986/1048425) मदद करनी चाहिए। – GarethD
मैंने इसे देखा है। धन्यवाद। लेकिन समाधान यह है: समाधान नहीं है और कारण नहीं है ... :( – Tirma
@ टीआरएम एमएस समर्थन मंच के जवाब में लिंक बताता है कि कुछ मामलों में क्वेरी को फिर से लिखना संभव है ताकि मान को फिर से नहीं बनाया जा सके। शायद कोशिश करें? –