Berikut ini bagian dari SQL Query normal query atau Correlated Subquery ??
SELECT UserID,
FirstName,
LastName,
DOB,
GFName,
GLName,
LoginName,
LoginEffectiveDate,
LoginExpiryDate,
Password,
Email,
ReportingTo,
Mobile,
CommunicationPreference,
IsActive
FROM (SELECT row_number() OVER (ORDER BY FirstName) AS Row,
UserID,
FirstName,
LastName,
DOB,
GFName,
GLName,
LoginName,
LoginEffectiveDate,
LoginExpiryDate,
Password,
Email,
ReportingTo,
Mobile,
CommunicationPreference,
IsActive
FROM DivakarUserRegistration) T
Juga, seseorang dapat menyatakan perbedaan antara kedua
Contoh di atas adalah tidak Co-terkait Sub-Query. Hal ini Berasal Meja / Inline-Lihat sejak saya.e, Sub-query dalam Klausa FROM.
Sebuah Berkoorelasi Sub-query harus merujuk induk(main Query) Tabel di dalamnya. Untuk contoh Lihat menemukan max N gaji oleh Co-terkait Sub-query:
SELECT Salary
FROM Employee E1
WHERE N-1 = (SELECT COUNT(*)
FROM Employee E2
WHERE E1.salary <E2.Salary)
Co-Terkait Vs Bersarang-SubQueries.
Perbedaan teknis antara Normal Sub-query dan Co-terkait sub-query adalah:
1. Perulangan: Co-terkait sub-query lingkaran di bawah utama-query; sedangkan bersarang tidak; oleh karena itu co-terkait sub-query dijalankan pada setiap iterasi dari main query. Sedangkan dalam kasus Nested query; subquery mengeksekusi pertama maka permintaan luar mengeksekusi berikutnya. Oleh karena itu, tidak maksimal. dari mengeksekusi adalah NXM untuk correlated subquery dan N+M untuk subquery.
2. Ketergantungan(bagian Dalam ke Luar lebih baik dari Luar ke Dalam): Dalam kasus co-terkait subquery, inner query tergantung pada permintaan luar untuk pengolahan padahal dalam kondisi normal sub-query, permintaan Luar tergantung pada inner query.
3.Kinerja: Menggunakan Co-terkait sub-query kinerja menurun, karena, ia melakukan NXM iterasi bukan N+M iterasi. ¨ Co-terkait Sub-Eksekusi query.
Untuk informasi lebih lanjut dengan contoh :
Correlated Subquery adalah sub-query yang menggunakan nilai-nilai dari outer query. Dalam hal ini inner query harus dilakukan untuk setiap baris dari outer query.
Lihat contoh berikut ini http://en.wikipedia.org/wiki/Correlated_subquery
Sederhana subquery doesn't menggunakan nilai-nilai dari permintaan luar dan sedang dihitung hanya sekali:
SELECT id, first_name
FROM student_details
WHERE id IN (SELECT student_id
FROM student_subjects
WHERE subject= 'Science');
Berkoorelasi Subquery Contoh -
Query Untuk Mencari semua karyawan yang gajinya di atas rata-rata untuk departemen mereka
SELECT employee_number, name
FROM employees emp
WHERE salary > (
SELECT AVG(salary)
FROM employees
WHERE department = emp.department);
BERKORELASI SUBQUERIES: dievaluasi untuk setiap baris diproses oleh permintaan Utama. Melaksanakan Inner query berdasarkan nilai diambil oleh permintaan Luar. Terus sampai semua nilai yang dikembalikan oleh query yang cocok. Dalam Permintaan ini didorong oleh Permintaan LUAR
Ex:
PILIH empno,fname,sal,deptid DARI e emp WHERE sal=(SELECT AVG(sal) DARI emp MANA deptid=e.deptid)
Berkorelasi subquery khusus menghitung AVG(sal)
untuk masing-masing departemen.
SUBQUERY: Berjalan lebih dulu,dieksekusi sekali,kembali nilai-nilai yang akan digunakan oleh Permintaan UTAMA. Permintaan LUAR didorong oleh INNER QUERY
Subquery adalah pilih pernyataan yang tertanam dalam klausul lain pernyataan select.
EX:
select ename, sal
from emp where sal > (select sal
from emp where ename ='FORD');
Sebuah Korelasi subquery adalah subquery yang dievaluasi sekali untuk setiap baris diproses oleh outer query atau permintaan utama. Melaksanakan Inner query berdasarkan nilai diambil oleh permintaan Luar semua nilai yang dikembalikan oleh query yang cocok. Dalam Permintaan ini didorong oleh Permintaan LUAR.
Ex:
select empno,sal,deptid
from emp e
where sal=(select avg(sal)
from emp where deptid=e.deptid);
PERBEDAAN
Dalam mengeksekusi query pertama dan menemukan nilai, permintaan luar mengeksekusi sekali menggunakan nilai dari inner query (subquery)
Ambil oleh permintaan luar, melaksanakan inner query menggunakan nilai outer query, gunakan nilai-nilai yang dihasilkan dari inner query untuk memenuhi syarat atau mendiskualifikasi permintaan luar (berkorelasi)
Untuk informasi lebih lanjut : http://www.oraclegeneration.com/2014/01/sql-interview-questions.html
ketika datang untuk subquery dan co-terkait permintaan keduanya memiliki inner query dan permintaan luar satu-satunya perbedaan adalah dalam subquery inner query doesn't tergantung pada permintaan luar, sedangkan di co-terkait inner query tergantung di luar.
Saya pikir penjelasan di bawah ini akan membantu anda..
diferensiasi antara mereka:
Correlated subquery
adalah sebuah inner query direferensikan oleh utama query (permintaan luar) seperti yang inner query dianggap sebagai excuted berulang kali.
non-correlated subquery
adalah sub query yang independen dari permintaan luar dan dapat dijalankan pada itu's sendiri tanpa mengandalkan utama outer query.
polos subquery
tidak tergantung pada permintaan luar,
Dalam query SQL, jika inner query untuk mengeksekusi setiap baris dari outer query. Jika inner query dijalankan untuk sekali dan hasilnya dikonsumsi oleh permintaan luar, maka hal ini disebut sebagai non co-terkait permintaan.