PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengubah ORDER BY dari id ke kolom terindeks lainnya (dengan LIMIT rendah) memiliki biaya yang sangat besar

Ternyata menjadi masalah indeks. Perilaku NULLS dari kueri tidak koheren dengan indeks.

CREATE INDEX message_created_at_idx on message (created_at DESC NULLS LAST);

... ORDER BY message.created_at DESC; -- defaults to NULLS FIRST when DESC

solusi

Jika Anda menentukan NULLS dalam indeks atau kueri Anda, pastikan keduanya koheren satu sama lain.

yaitu:ASC NULLS LAST koheren dengan ASC NULLS LAST atau DESC NULLS FIRST .

NULLS TERAKHIR

CREATE INDEX message_created_at_idx on message (created_at DESC NULLS LAST);

... ORDER BY messsage.created_at DESC NULLS LAST;

NULLS PERTAMA

CREATE INDEX message_created_at_idx on message (created_at DESC); -- defaults to NULLS FIRST when DESC

... ORDER BY messsage.created_at DESC -- defaults to NULLS FIRST when DESC;

BUKAN NULL

Jika kolom Anda BUKAN NULL, jangan repot-repot dengan NULLS.

CREATE INDEX message_created_at_idx on message (created_at DESC);

... ORDER BY messsage.created_at DESC;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Statistik cakupan kode

  2. Menggunakan Otomatisasi untuk Mempercepat Tes Rilis di PostgreSQL

  3. Bagaimana cara CAST AS DECIMAL di postgresql?

  4. Bagaimana menemukan nama database folder \data\base postgres?

  5. Fungsi agregat penjumlahan array berpasangan?