Pertanyaan Di SQL, Bagaimana cara menggunakan DISTINCT memengaruhi kinerja?


Saya mencoba untuk memilih daftar yang berbeda di mana duplikat dibuat di beberapa bidang. Sebagai contoh,

SELECT tablename.field1Date, 
       tablename.field2Number, 
       tablename.field3Text 
FROM tablename;

Akan memilih menduplikasi catatan atas tanggal, nomor dan bidang teks masing-masing.

Sekarang, ketika saya memilih catatan yang berbeda untuk memberikan apa yang saya cari, kinerja tampaknya menurun secara dramatis.

SELECT DISTINCT tablename.field1Date,
                tablename.field2Number, 
                tablename.field3Text 
FROM tablename;

Apakah ada alasan yang diketahui untuk ini? Saya harus mengakui saya menggunakan MS Access 2003 yang mungkin menjadi masalah.


5
2018-02-06 16:42


asal


Jawaban:


Ya, pada dasarnya itu harus mengurutkan hasil dan kemudian diproses ulang untuk menghilangkan duplikat. Penyisihan ini juga bisa dilakukan selama semacam itu, tetapi kita hanya bisa berspekulasi tentang bagaimana tepatnya kode bekerja di latar belakang. Anda dapat mencoba dan meningkatkan kinerja dengan membuat indeks yang terdiri dari ketiga (3) bidang.


10
2018-02-06 16:44



Halaman ini memiliki tips untuk meningkatkan kinerja query Anda dan juga beberapa informasi tentang penggunaan analisa kinerja. Ini akan memberi tahu Anda bagaimana jika ada indeks yang diperlukan.

http://support.microsoft.com/kb/209126


4
2018-02-06 16:57



Ya, aplikasi perlu membandingkan setiap catatan ke cache catatan "berbeda" saat berjalan. Anda dapat meningkatkan kinerja dengan menggunakan indeks, terutama pada bidang numerik dan tanggal.


1
2018-02-06 16:47