Veritabanındaki bazı komutların sonuçları sıraladığını herkes bilir.Veri miktarı büyük olduğunda sıralama çok zaman alabilir. Bugün temel olarak gereksiz sıralamanın nasıl önleneceğini ve SQL yürütme verimliliğini nasıl artıracağımızı tartışıyoruz.
Sıralanacak temsili işlemler şunlardır:
GROUP BY maddesi
ORDER BY maddesi
Toplama işlevleri (SUM, COUNT, AVG, MAX, MIN)
DISTINCT
İşlemleri ayarla (UNICON, INTERSECT, EXCEPT)
Pencere işlevleri (RANK, ROW_NUMBER, vb.)
İşte örnekleme, birleşim ve farklı için iki örnek.
1. Mümkün olduğunda birleşim yerine tüm birleşim kullanın
TABLE_A'DAN SEÇ * BİRLİĞİ TÜMÜ TABLE_B'DEN SEÇ *;Sonuçlarda yinelenen verileri umursamıyorsanız veya sonuçlarda yinelenen verilerin olmayacağını önceden biliyorsanız. Sıralama yapılmaması için lütfen birleşim yerine birleşim kullanın.
2. Mümkün olduğunda farklı yerine kullanım vardır
Örnek veriler, bir emtia tablosu ve aşağıda bir satış kaydı tablosu olduğunu göstermektedir.
Öğeler:
Satış Geçmişi:
Gereksinimler: Satış kayıtları olan ürünleri bulun.
İn kullanılarak uygulanabilir, ancak in alt sorgular oluşturacağından, birleştirme sorguları kullanmak kadar verimli değildir.
DISTINCT I.item_no SEÇİN Öğelerden I INNER JOIN SalesHistory S AÇIK I.item_no = S.item_no;Birden çoğa bir sorgu olduğu için, yinelenen kayıtlar oluşturulur ve tüm yinelenen kayıtlar DISTINCT kullanılarak filtrelenir.
Ancak daha iyi bir yaklaşım, var yöntemini kullanmaktır:
DISTINCT i SEÇİN I.item_no Öğelerden I NEREDE VAR ( SalesHistory S'DEN SEÇ * NEREDE I.item_no = S.item_no );Not: Var olan sorgu sıralanmayacağından ve var olanın kullanımı bağlantı kullanmak kadar etkilidir.
Bugün temel olarak SQL'de gereksiz sıralamadan nasıl kaçınılacağını tartıştım.İki örnekle açıklayacağım: Birleşim yerine tüm birleşimi kullanmaya çalışın ve farklı yerine var.
Daha sonra daha fazla DBA içeriği paylaşılacak, ilgilenen arkadaşlar takip edebilir!