क्वेरी प्रोसेसिंग के वैचारिक आदेश है:
1. FROM
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. ORDER BY
लेकिन यह सिर्फ एक वैचारिक आदेश है। वास्तव में इंजन क्लॉज को पुनर्व्यवस्थित करने का निर्णय ले सकता है। यहां सबूत है।1000000 पंक्तियों से प्रत्येक के साथ 2 टेबल बनाने की सुविधा देता है:
SELECT * FROM dbo.test1 t1
JOIN dbo.test2 t2 ON t2.id = t1.id AND t2.id = 100
WHERE t1.id > 1
SELECT * FROM dbo.test1 t1
JOIN dbo.test2 t2 ON t2.id = t1.id
WHERE t1.id = 1
सूचना पहले सबसे पंक्तियां फिल्टर होगा join
हालत में बाहर, दूसरा where
हालत में:
CREATE TABLE test1 (id INT IDENTITY(1, 1), name VARCHAR(10))
CREATE TABLE test2 (id INT IDENTITY(1, 1), name VARCHAR(10))
;WITH cte AS(SELECT -1 + ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) d FROM
(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) t1(n) CROSS JOIN
(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) t2(n) CROSS JOIN
(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) t3(n) CROSS JOIN
(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) t4(n) CROSS JOIN
(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) t5(n) CROSS JOIN
(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) t6(n))
INSERT INTO test1(name) SELECT 'a' FROM cte
अब 2 क्वेरी चला। उत्पादन की योजना को देखो:
1 TableScan - विधेय:।।।। [टेस्ट] [dbo] [test2] इसे [t2] [id] = (100) [id]
2 TableScan - विधेय:।।।। [टेस्ट] [dbo] [test2] [id] के रूप में [t2] [id] = (1)
जिसका मतलब है कि पहली क्वेरी अनुकूलित में फिल्टर करने के लिए join
स्थिति का मूल्यांकन करने के लिए पहले का फैसला किया बाहर पंक्तियों, दूसरे में यह where
पहले खंड का मूल्यांकन किया।
शायद यह मदद मिलेगी: http://stackoverflow.com/प्रश्न/8798 9 3/एसक्यूएल-ऑर्डर-ऑफ-ऑपरेशंस –
संचालन के लिए एक * तार्किक * प्रसंस्करण आदेश है लेकिन डेटाबेस सिस्टम उन परिचालनों को फिर से व्यवस्थित करने के लिए स्वतंत्र हैं बशर्ते उत्पादित अंतिम परिणाम समान हैं जैसे कि उन्होंने तार्किक प्रसंस्करण का पालन किया है आदेश। आपको वास्तविक आदेश की परवाह नहीं करनी चाहिए, जब तक कि यह बुरी तरह से प्रदर्शन न करे - आपको "आप क्या चाहते हैं" सर्वर को बताना चाहिए, "इसे कैसे करें" –
इससे मदद मिलेगी: http://stackoverflow.com/questions/19477950/ हैं-भीतरी में शामिल होने और बाहरी-जोड़-आवश्यक/19478161 # 19478161 – Deepshikha