क्या कोई जानता है कि एसक्यूएल सर्वर टेबल 'बिल्डिंग' से दो बार पूछताछ क्यों करता है? क्या कोई स्पष्टीकरण है? क्या यह केवल एक टेबल के साथ किया जा सकता है? दो क्लस्टर सूचकांक की तलाश मर्ज के माध्यम से एकीकृत शामिल हों (संयोजन):एसक्यूएल सर्वर - एक ही टेबल के लिए स्कैनिंग दो बार क्यों किया जाता है?
DECLARE @id1stBuild INT = 1
,@number1stBuild INT = 2
,@idLastBuild INT = 5
,@numberLastBuild INT = 1;
DECLARE @nr TABLE (nr INT);
INSERT @nr
VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
CREATE TABLE building (
id INT PRIMARY KEY identity(1, 1)
,number INT NOT NULL
,idStreet INT NOT NULL
,surface INT NOT NULL
)
INSERT INTO building (number,idStreet,surface)
SELECT bl.b
,n.nr
,abs(convert(BIGINT, convert(VARBINARY, NEWID()))) % 500
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY n1.nr) b
FROM @nr n1
CROSS JOIN @nr n2
CROSS JOIN @nr n3
) bl
CROSS JOIN @nr n
--***** execution plan for the select below
SELECT *
FROM building b
WHERE b.id = @id1stBuild
AND b.number = @number1stBuild
OR b.id = @idLastBuild
AND b.number = @numberLastBuild
DROP TABLE building
इस के लिये कार्य योजना हमेशा एक ही है:
इस कोड नमूना है। बाकी कम महत्वपूर्ण है।
के बराबर आपका जहां खंड एक ब्रैकेट याद आ रही है है। मुझे लगता है कि इसका कारण हो सकता है ... '([email protected] और [email protected]) या ([email protected] और [email protected])' '' 'के कारण –
त्वरित उत्तर के लिए धन्यवाद। मैंने कोशिश की और यह अभी भी एक ही निष्पादन योजना है। – Emarian