

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Praktik terbaik untuk bekerja dengan indeks
<a name="best-practices-indexes"></a>

## Indeks bangunan
<a name="best-practices-building-indexes"></a>

Ketika mengimpor data ke Amazon DocumentDB, Anda harus membuat indeks Anda sebelum mengimpor set data besar. Anda dapat menggunakan Alat [Indeks Amazon DocumentDB untuk mengekstrak indeks](https://github.com/awslabs/amazon-documentdb-tools/tree/master/index-tool) dari instance MongoDB atau direktori mongodump yang sedang berjalan, dan membuat indeks tersebut di cluster Amazon DocumentDB. Untuk panduan lebih lanjut tentang migrasi, lihat [Migrasi ke Amazon DocumentDB](docdb-migration.md).

## Selektivitas indeks
<a name="best-practices-index-selectivity"></a>

Kami merekomendasikan Anda membatasi pembuatan indeks ke bidang di mana jumlah nilai duplikat kurang dari 1% dari jumlah total dokumen dalam koleksi. Sebagai contoh, jika koleksi Anda berisi 100.000 dokumen, hanya buat indeks pada bidang di mana nilai yang sama terjadi 1.000 kali atau kurang.

Memilih indeks dengan jumlah nilai unik yang tinggi (yaitu, kardinalitas tinggi) memastikan bahwa operasi filter mengembalikan sejumlah kecil dokumen, sehingga menghasilkan kinerja yang baik selama pemindaian indeks. Contoh indeks kardinalitas tinggi adalah indeks unik, yang menjamin bahwa predikat kesetaraan mengembalikan paling banyak satu dokumen. Contoh kardinalitas rendah termasuk indeks di atas bidang Boolean dan indeks di atas hari dalam seminggu. Karena kinerjanya yang buruk, indeks kardinalitas rendah tidak mungkin dipilih oleh pengoptimal kueri database. Pada saat yang sama, indeks kardinalitas rendah terus mengkonsumsi sumber daya seperti ruang disk dan. I/Os Sebagai aturan praktis, Anda harus menargetkan indeks pada bidang di mana frekuensi nilai khas adalah 1% dari total ukuran koleksi atau kurang.

Selain itu, direkomendasikan untuk hanya membuat indeks pada bidang yang umumnya digunakan sebagai filter dan secara teratur mencari indeks yang tidak terpakai. Untuk informasi selengkapnya, lihat [Bagaimana cara menganalisis penggunaan indeks dan mengidentifikasi indeks yang tidak digunakan?](user_diagnostics.md#user-diag-index-usage).

## Dampak indeks pada penulisan data
<a name="best-practices-impact-writing"></a>

Meskipun indeks dapat meningkatkan performa kueri dengan menghindari kebutuhan untuk memindai setiap dokumen dalam koleksi, peningkatan ini disertai dengan tradeoff. Untuk setiap indeks pada koleksi, setiap kali dokumen dimasukkan, diperbarui, atau dihapus, basis data harus memperbarui koleksi dan menulis bidang untuk masing-masing indeks untuk koleksi. Sebagai contoh, jika koleksi memiliki sembilan indeks, basis data harus melakukan sepuluh penulisan sebelum mengakui operasi ke klien. Dengan demikian, setiap indeks tambahan menimbulkan latensi tulis tambahan, I/Os, dan peningkatan penyimpanan yang digunakan secara keseluruhan.

Instans klaster harus berukuran tepat untuk menjaga semua memori set kerja. Ini menghindari kebutuhan untuk terus membaca halaman indeks dari volume penyimpanan, yang berdampak negatif pada kinerja dan menghasilkan I/O biaya yang lebih tinggi. Untuk informasi selengkapnya, lihat [Ukuran instans](https://docs.aws.amazon.com/documentdb/latest/devguide/best_practices.html#best_practices-instance_sizing).

Untuk performa terbaik, meminimalkan jumlah indeks dalam koleksi Anda, tambahkan hanya indeks yang diperlukan untuk meningkatkan performa untuk kueri umum. Meskipun beban kerja bervariasi, pedoman yang baik adalah untuk menjaga jumlah indeks per koleksi menjadi lima atau lebih sedikit.

## Mengidentifikasi indeks yang hilang
<a name="best-practices-missing-indexes"></a>

Mengidentifikasi indeks yang hilang adalah praktik terbaik yang kami rekomendasikan untuk dilakukan secara teratur. Untuk informasi selengkapnya, lihat [Bagaimana cara mengidentifikasi indeks yang hilang?](user_diagnostics.md#user_diagnostics-identify_missing_indexes).

## Mengidentifikasi indeks yang tidak digunakan
<a name="best-practices-unused-indexes"></a>

Mengidentifikasi dan menghapus indeks yang tidak terpakai adalah praktik terbaik yang kami rekomendasikan untuk dilakukan secara teratur. Untuk informasi selengkapnya, lihat [Bagaimana cara menganalisis penggunaan indeks dan mengidentifikasi indeks yang tidak digunakan?](user_diagnostics.md#user-diag-index-usage).