Yazdığınız şey SQL’in gördüğü değildir

PostgreSQL'de Sorgu Performansını İyileştirme

Amy McCarty

Instructor

Cebirde işlem sırası

 

  • Sözdizimsel (yazıldığı gibi)
  • Mantıksal (çalıştığı gibi)

 

PEMDAS BODMAS
Parenthesis Brackets
Exponents Order
Multiplication /Division Division /Multiplication
Addition /Subtraction Addition /Subtraction
PostgreSQL'de Sorgu Performansını İyileştirme

İşlem sırasını uygulama

 

Sözdizimsel:

$$ x = 2 + (8 + 4) \div 2 $$

$$ x = 10 + 4) \div 2 $$

$$ x = 14 \div 2 $$

$$ x = 7 $$

 

Mantıksal:

$$ x = 2 + (8 + 4) \div 2 $$

$$ x = 2 + \frac{12}{2} $$

$$ x = 2 + 6 $$

$$ x = 8 $$

PostgreSQL'de Sorgu Performansını İyileştirme

SQL’de mantıksal işlem sırası

Sıra İfade Amaç
1 FROM Sorguda join varsa tablo(lar)a erişimi sağlar
2 WHERE Kayıtları filtreler/kısıtlar
3 GROUP BY Kayıtları kategorilere ayırır
4 SUM(), COUNT(), vb. Toplulaştırır
5 SELECT dönecek sütunları seçer
SELECT COUNT(*) FROM tableA WHERE col1 = 77
PostgreSQL'de Sorgu Performansını İyileştirme

Group by ve toplulaştırmalar

event_location storm elements days
Russia blizzard water 1
Argentina tornado water 1
Argentina tornado wind 1
Australia tornado wind 1
Kuwait haboob wind 2
USA haboob wind 2
SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements

 

Çıktı yok - 
kodunuz bir hata üretti

"storm" sütunu 
GROUP BY ifadesinde yer almalı 
ya da bir toplulaştırma 
fonksiyonunda kullanılmalı
PostgreSQL'de Sorgu Performansını İyileştirme

Group by ve toplulaştırmada işlem sırası

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements
sıra SQL ifadesi kullanılabilir sütunlar
1 FROM weather_events tümü
3 GROUP BY elements elements
4 COUNT elements
PostgreSQL'de Sorgu Performansını İyileştirme

Group by, toplulaştırmalarla eşleşmeli

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements, storm
PostgreSQL'de Sorgu Performansını İyileştirme

Group by, toplulaştırmalarla eşleşmeli

SELECT elements, storm, COUNT(*)
FROM weather_events
GROUP BY elements, storm

Sonuçlar

elements storm count
water blizzard 1
water tornado 1
wind tornado 2
wind haboob 2
PostgreSQL'de Sorgu Performansını İyileştirme

SQL’de mantıksal işlem sırası (devam)

Sıra İfade Amaç
...
5 SELECT dönecek sütunları seçer
6 DISTINCT yinelenenleri kaldırır
7 ORDER BY sonuçları sıralar
8 LIMIT satırları kısıtlar
PostgreSQL'de Sorgu Performansını İyileştirme

Distinct ve limit

row_no location storm elements days
1 Russia blizzard water 1
2 Argentina tornado water 1
3 Argentina tornado wind 1
4 Australia tornado wind 1
5 Kuwait haboob wind 2
6 USA haboob wind 2
SELECT DISTINCT storm, elements
FROM weather_events
ORDER BY storm LIMIT 3
PostgreSQL'de Sorgu Performansını İyileştirme
row_no location storm elements days
1 Russia blizzard water 1
2 Argentina tornado water 1
3 Argentina tornado wind 1
4 Australia tornado wind 1
5 Kuwait haboob wind 2
6 USA haboob wind 2
SELECT DISTINCT storm, elements
FROM weather_events 
ORDER BY storm LIMIT 3
PostgreSQL'de Sorgu Performansını İyileştirme
row_no location storm elements days
1 Russia blizzard water 1
2 Argentina tornado water 1
3 Argentina tornado wind 1
4 Australia tornado wind 1
5 Kuwait haboob wind 2
6 USA haboob wind 2
SELECT DISTINCT storm, elements
FROM weather_events 
ORDER BY storm LIMIT 3
sıra SQL ifadesi kullanılabilir satırlar
1 FROM weather_events tümü
PostgreSQL'de Sorgu Performansını İyileştirme
row_no storm elements
1 blizzard water
2 tornado water
3 tornado wind
5 haboob wind

 

 

SELECT DISTINCT storm, elements
FROM weather_events
ORDER BY storm LIMIT 3
sıra SQL ifadesi kullanılabilir satırlar
1 FROM weather_events tümü
5 SELECT storm, elements tümü
PostgreSQL'de Sorgu Performansını İyileştirme
row_no storm elements
1 blizzard water
2 tornado water
3 tornado wind
5 haboob wind

 

 

SELECT DISTINCT storm, elements
FROM weather_events
ORDER BY storm LIMIT 3
sıra SQL ifadesi kullanılabilir satırlar
1 FROM weather_events tümü
5 SELECT storm, elements tümü
6 DISTINCT 1, 2, 3, 5
PostgreSQL'de Sorgu Performansını İyileştirme
row_no storm elements
1 blizzard water
5 haboob wind
2 tornado water
3 tornado wind

 

 

SELECT DISTINCT storm, elements
FROM weather_events
ORDER BY storm LIMIT 3
sıra SQL ifadesi kullanılabilir satırlar
1 FROM weather_events tümü
5 SELECT storm, elements tümü
6 DISTINCT 1, 2, 3, 5
7 ORDER BY storm 1, 5, 2, 3
PostgreSQL'de Sorgu Performansını İyileştirme
row_no storm elements
1 blizzard water
5 haboob wind
2 tornado water

 

 

 

SELECT DISTINCT storm, elements
FROM weather_events
ORDER BY storm LIMIT 3
sıra SQL ifadesi kullanılabilir satırlar
1 FROM weather_events tümü
5 SELECT storm, elements tümü
6 DISTINCT 1, 2, 3, 5
7 ORDER BY storm 1, 5, 2, 3
8 LIMIT 3 1, 5, 2
PostgreSQL'de Sorgu Performansını İyileştirme
Sıra İfade Amaç Kısıtlar
1 FROM tablo(lar)a erişimi sağlar
2 WHERE kayıtları filtreler/kısıtlar satır sayısı
3 GROUP BY kayıtları kategorilere ayırır sütun sayısı
4 SUM, COUNT, vb. toplulaştırır satır sayısı
5 SELECT dönecek sütunları seçer sütun sayısı
6 DISTINCT yinelenenleri kaldırır satır sayısı
7 ORDER BY sonuçları sıralar
8 LIMIT kayıtları kısıtlar satır sayısı
PostgreSQL'de Sorgu Performansını İyileştirme

Hadi pratik yapalım!

PostgreSQL'de Sorgu Performansını İyileştirme

Preparing Video For Download...