Alt sorgular ve ortak tablo ifadeleri (CTE)

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

Amy McCarty

Instructor

Alt sorgular hakkında

Nedir?

  • Join alternatifi
  • Basit sorgu

Neden?

  • Tek sonuç döndürebilir
  • Okunaklı
  • Join’lere benzer SQL yönergeleri

Nasıl?

  • SELECT, FROM veya WHERE ifadelerinde
PostgreSQL'de Sorgu Performansını İyileştirme

SELECT alt sorgusu

satır script_word word_length
1 goat 4
2 goat 4
3 dog 3
15,782 ... ...
satır english_word word_length
1 goat 4
2 turkey 6
3 ant 3
171,476 ... ...
PostgreSQL'de Sorgu Performansını İyileştirme

SELECT alt sorgusu

SELECT AVG(word_length) AS avg_movie
  , (SELECT AVG(word_length) 
      FROM english_language) 
      AS avg_english
FROM MOVIE
avg_movie avg_english
3 4.5
PostgreSQL'de Sorgu Performansını İyileştirme

WHERE alt sorgusu

satır script_word word_length
1 goat 4
2 goat 4
3 dog 3
15,782 ... ...
satır english_word word_length
1 goat 4
2 turkey 6
3 ant 3
171,476 ... ...
PostgreSQL'de Sorgu Performansını İyileştirme

WHERE alt sorgusu

SELECT AVG(word_length) AS avg_movie
FROM english_language
WHERE word IN 
  (SELECT DISTINCT word FROM movie) 
avg_movie
3
PostgreSQL'de Sorgu Performansını İyileştirme

FROM alt sorgusu

SELECT AVG(word_length) AS avg_movie 
FROM (SELECT * FROM movie)

 

  • Okunabilirliği azaltır
  • Sorgu planı esnekliğini sınırlar
PostgreSQL'de Sorgu Performansını İyileştirme

Ortak tablo ifadeleri (CTE) hakkında

Nedir?

  • Join alternatifi
  • Geçici sonuç kümesiyle bağımsız sorgu

Neden?

  • Tek sonuç döndürebilir
  • Okunaklı
  • Geçici tablo oluşturur

Nasıl?

  • WITH ifadeleri
PostgreSQL'de Sorgu Performansını İyileştirme

CTE yapısı

WITH english_cte AS
(    
  SELECT word_length
      , COUNT(word) AS english_word_count
    FROM english_language 
    GROUP BY word_length
)

SELECT movie.word_length , COUNT(movie.word) AS movie_word_count , cte.english_word_count FROM movie INNER JOIN english_cte cte ON movie.word_length = cte.word_length GROUP BY movie.word_length, cte.english_word_count
PostgreSQL'de Sorgu Performansını İyileştirme

Hadi pratik yapalım!

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

Preparing Video For Download...