Muhammad Alif Fadhillah
0320240043
Mi—1a
Query Design Analysis
Exercise : Membuat Query Efesien
Query SQL dan Output
1. Buatlah query SELECT dari table [Link] dengan kolom name yang memiliki
kata “Ice”.
a. Tulis query dengan menggunakan LIKE
SELECT *
FROM [Link]
WHERE Name LIKE '%Ice%'
b. Analisa Execution Plan, detail dan STATISTICS.
SET STATISTICS IO ON;
SET STATISTICS TIME ON;
SELECT *
FROM [Link]
WHERE Name LIKE '%Ice%'
SET STATISTICS IO OFF;
SET STATISTICS TIME OFF;
c. Buat ulang query SQL sehingga menjadi lebih efisien, sertakan Execution Plan, Detail dan
STATISTICS pada query. Analisa dan bandingkan dengan query sebelumnya.
Petunjuk: Gunakan kondisi >= dan < untuk menggantikan operator LIKE
SET STATISTICS IO ON;
SET STATISTICS TIME ON;
SELECT *
FROM [Link]
WHERE Name >= 'Ice' AND Name < 'Icf'
SET STATISTICS IO OFF;
SET STATISTICS TIME OFF;
2. Perhatikan table [Link], kali ini kita akan mencoba menampilkan
semua baris
dari [Link] dengan OrderDate di bulan Juni tahun 2011. Dalam latihan
ini, dapat menggunakan fungsi DATEPART, hal ini dapat mencegah optimizer menggunakan
index yang ada pada kolom.
a. Buat Non Clustered Index dengan nama NCI_SalesOrderHeader_OrderDate pada
kolom OrderDate di table [Link]. Kita lihat apa yang akan terjadi jika
kolom terdapat Non Clustered Index
CREATE NONCLUSTERED INDEX NCI_SalesOrderHeader_OrderDate
ON [Link](OrderDate);
b. Buatlah query yang menampilkan semua baris dari [Link] dengan
kolom OrderDate dibulan Juni dan tahun 2011
SELECT *
FROM [Link]
WHERE DATEPART(MONTH, OrderDate) = 6 AND DATEPART(YEAR, OrderDate) = 2011;
c. Printscreen Execution Plan, Detail dan STATISTICS ouput yang dihasilkan dan analisa
SET STATISTICS IO ON;
SET STATISTICS TIME ON;
SELECT *
FROM [Link]
WHERE DATEPART(MONTH, OrderDate) = 6 AND DATEPART(YEAR, OrderDate) = 2011;
SET STATISTICS IO OFF;
SET STATISTICS TIME OFF;
d. Buat ulang query SQL sehingga menjadi lebih efisien, sertakan Execution Plan, Detail dan
STATISTICS pada query. Analisa dan bandingkan dengan query sebelumnya.
Petunjuk: Gunakan perbandingan bagian tanggal yang dapat dilakukan tanpa menerapkan
fungsi pada kolom DATETIME menggunakan operator >= dan <=
SET STATISTICS IO ON;
SET STATISTICS TIME ON;
SELECT *
FROM [Link]
WHERE OrderDate >= '2011-06-01' AND OrderDate < '2011-07-01';
SET STATISTICS IO OFF;
SET STATISTICS TIME OFF;
e. Pastikan menghapus kembali index yang sudah dibuat.
DROP INDEX NCI_SalesOrderHeader_OrderDate ON [Link];