Saya baru mengenal PostgreSQL dan agak baru di database secara umum. Apakah ada cara yang mapan tentang bagaimana kita harus mengindeks nilai-nilai UUID di Postgres? Saya terpecah antara menggunakan hashing dan menggunakan trie, kecuali sudah ada sesuatu bawaan yang digunakan secara otomatis. Apa pun yang saya gunakan akan menangani data dalam jumlah besar.
Indeks "text_ops" keluarga operator SP-GiST menggunakan trie. Karena UUID sangat panjang dan sangat berbeda, ini terdengar menarik meskipun saya hanya akan melakukan pencarian penuh.
Ada juga opsi hash. Hashing adalah O (1), dan saya tidak perlu melakukan perbandingan selain kesetaraan tentu saja, tetapi karena UUID cukup panjang, saya khawatir menghasilkan hash dari mereka akan menghabiskan banyak waktu.
Atau ini sesuatu yang terlalu tergantung pada sistem dan penggunaan spesifik?
Saya lebih suka menggunakan bigserial dalam banyak kasus, tetapi saya telah diberitahu untuk menggunakan uuid untuk ini. Kami membutuhkan uuid karena kami mungkin memiliki beberapa server menggunakan database yang berbeda, jadi tidak ada jaminan bahwa kami akan mendapatkan bigint yang unik. Kita dapat menggunakan urutan (dan seed) yang berbeda untuk setiap server, tetapi masih tidak sefleksibel UUID. Misalnya, kami tidak akan dapat memigrasi entri basis data dari satu server ke server lain tanpa mengonversi ID dan rujukan mereka di mana-mana.