Bagaimana memeriksa indeks diatur atau tidak di php?

Indeks mendukung eksekusi kueri yang efisien di MongoDB. Tanpa indeks, MongoDB harus melakukan pemindaian koleksi, mis. e. pindai setiap dokumen dalam koleksi, untuk memilih dokumen yang cocok dengan pernyataan kueri. Jika ada indeks yang sesuai untuk kueri, MongoDB dapat menggunakan indeks untuk membatasi jumlah dokumen yang harus diperiksa

Indeks adalah struktur data khusus yang menyimpan sebagian kecil kumpulan data koleksi dalam bentuk yang mudah dilintasi. Indeks menyimpan nilai bidang tertentu atau kumpulan bidang, diurutkan berdasarkan nilai bidang. Pengurutan entri indeks mendukung pencocokan kesetaraan yang efisien dan operasi kueri berbasis rentang. Selain itu, MongoDB dapat mengembalikan hasil yang diurutkan dengan menggunakan pengurutan dalam indeks

Diagram berikut mengilustrasikan kueri yang memilih dan mengurutkan dokumen yang cocok menggunakan indeks

Bagaimana memeriksa indeks diatur atau tidak di php?

Pada dasarnya, indeks di MongoDB mirip dengan indeks di sistem basis data lainnya. MongoDB mendefinisikan indeks pada level dan mendukung indeks pada bidang atau subbidang apa pun dari dokumen dalam kumpulan MongoDB

Default_id Indeks

MongoDB membuat di lapangan selama pembuatan koleksi. Indeks _id mencegah klien memasukkan dua dokumen dengan nilai yang sama untuk bidang _id. Anda tidak dapat menghapus indeks ini di bidang _id

Catatan

Di , jika Anda tidak menggunakan bidang _id sebagai , maka aplikasi Anda harus memastikan keunikan nilai di bidang _id untuk mencegah kesalahan. Ini paling sering dilakukan dengan menggunakan standar yang dihasilkan secara otomatis

Buat Indeks


➤ Gunakan menu tarik-turun Pilih bahasa Anda di kanan atas untuk mengatur bahasa contoh di halaman ini


[]Indeks MongoDB menggunakan struktur data B-tree

Nama Indeks

Nama default untuk indeks adalah gabungan dari kunci yang diindeks dan setiap arah kunci dalam indeks ( i. e. 1 atau -1) menggunakan garis bawah sebagai pemisah. Misalnya, indeks yang dibuat pada

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )
_3 memiliki nama
db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )
4

Anda dapat membuat indeks dengan nama khusus, seperti nama yang lebih mudah dibaca manusia daripada nama default. Misalnya, pertimbangkan aplikasi yang sering menanyakan koleksi

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )
5 untuk mengisi data pada inventaris yang ada. Metode berikut membuat indeks pada
db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )
_7 dan
db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )
8 bernama
db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )
9

db.products.createIndex(  { item: 1, quantity: -1 } ,  { name: "query for inventory" })
_

Anda dapat melihat nama indeks menggunakan metode ini. Anda tidak dapat mengganti nama indeks setelah dibuat. Sebagai gantinya, Anda harus menghapus dan membuat ulang indeks dengan nama baru

Jenis Indeks

MongoDB menyediakan sejumlah jenis indeks yang berbeda untuk mendukung jenis data dan kueri tertentu

Bidang Tunggal

Selain indeks _id yang ditentukan MongoDB, MongoDB mendukung pembuatan indeks naik/turun yang ditentukan pengguna pada satu bidang dokumen

Untuk indeks bidang tunggal dan operasi pengurutan, tata urutan (mis. e. naik atau turun) kunci indeks tidak masalah karena MongoDB dapat melintasi indeks di kedua arah

Lihat Indeks Bidang Tunggal dan untuk informasi selengkapnya tentang indeks bidang tunggal

Indeks Senyawa

MongoDB juga mendukung indeks yang ditentukan pengguna di berbagai bidang, mis. e. indeks majemuk

Urutan bidang yang tercantum dalam indeks majemuk memiliki arti penting. Misalnya, jika indeks majemuk terdiri dari

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )
2, indeks akan diurutkan terlebih dahulu dengan
db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )
3 dan kemudian, dalam setiap nilai
db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )
3, diurutkan dengan
db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )
5

Untuk indeks majemuk dan operasi pengurutan, urutan pengurutan (mis. e. naik atau turun) dari kunci indeks dapat menentukan apakah indeks dapat mendukung operasi pengurutan. Lihat untuk informasi selengkapnya tentang pengaruh urutan indeks pada hasil dalam indeks majemuk

Lihat juga

  • , dan

Indeks Multikunci

MongoDB menggunakan indeks multikey untuk mengindeks konten yang disimpan dalam array. Jika Anda mengindeks bidang yang menyimpan nilai larik, MongoDB membuat entri indeks terpisah untuk setiap elemen larik. Indeks multikunci ini memungkinkan kueri untuk memilih dokumen yang berisi larik dengan mencocokkan elemen atau elemen larik. MongoDB secara otomatis menentukan apakah akan membuat indeks multikunci jika bidang yang diindeks berisi nilai larik;

Lihat Indeks Multikunci dan Batas Indeks Multikunci untuk informasi selengkapnya tentang indeks multikunci

Indeks Geospasial

Untuk mendukung kueri data koordinat geospasial yang efisien, MongoDB menyediakan dua indeks khusus. Indeks 2d yang menggunakan geometri planar saat mengembalikan hasil dan indeks 2dsphere yang menggunakan geometri bola untuk mengembalikan hasil

Lihat

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )
_6 Indeks Internal untuk pengenalan tingkat tinggi indeks geospasial

Indeks Pencarian Teks

Untuk data yang dihosting di MongoDB Atlas, Anda dapat mendukung pencarian teks lengkap dengan indeks Pencarian Atlas. Untuk mempelajari lebih lanjut, lihat

Buat Indeks Pencarian Atlas

Untuk penerapan yang dikelola sendiri (non-Atlas), MongoDB menyediakan tipe indeks

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )
7 yang mendukung pencarian konten string dalam kumpulan. Untuk mempelajari lebih lanjut tentang indeks teks yang dikelola sendiri, lihat

Indeks Hash

Untuk mendukung , MongoDB menyediakan tipe indeks hash, yang mengindeks hash dari nilai suatu bidang. Indeks ini memiliki distribusi nilai yang lebih acak di sepanjang rentangnya, tetapi hanya mendukung pencocokan kesetaraan dan tidak dapat mendukung kueri berbasis rentang

Indeks Berkelompok

Mulai di MongoDB 5. 3, Anda dapat membuat koleksi dengan a. Koleksi yang dibuat dengan indeks berkerumun disebut koleksi berkerumun

Lihat

Properti Indeks

Indeks Unik

Properti unik untuk indeks menyebabkan MongoDB menolak nilai duplikat untuk bidang yang diindeks. Selain batasan unik, indeks unik secara fungsional dapat dipertukarkan dengan indeks MongoDB lainnya

Indeks Parsial

Indeks parsial hanya mengindeks dokumen dalam kumpulan yang memenuhi ekspresi filter yang ditentukan. Dengan mengindeks subkumpulan dokumen dalam kumpulan, indeks parsial memiliki persyaratan penyimpanan yang lebih rendah dan mengurangi biaya kinerja untuk pembuatan dan pemeliharaan indeks

Indeks parsial menawarkan superset fungsionalitas indeks jarang dan harus lebih disukai daripada indeks jarang

Indeks Jarang

Properti jarang indeks memastikan bahwa indeks hanya berisi entri untuk dokumen yang memiliki bidang yang diindeks. Indeks melompati dokumen yang tidak memiliki bidang yang diindeks

Anda dapat menggabungkan opsi indeks jarang dengan opsi indeks unik untuk mencegah penyisipan dokumen yang memiliki nilai duplikat untuk bidang yang diindeks dan melewati pengindeksan dokumen yang tidak memiliki bidang yang diindeks

Indeks TTL

Indeks TTL adalah indeks khusus yang dapat digunakan MongoDB untuk secara otomatis menghapus dokumen dari koleksi setelah jangka waktu tertentu. Ini sangat ideal untuk jenis informasi tertentu seperti data peristiwa yang dihasilkan mesin, log, dan informasi sesi yang hanya perlu bertahan dalam database untuk waktu yang terbatas.

Lihat. Kedaluwarsa Data dari Koleksi dengan Mengatur TTL untuk instruksi implementasi

Indeks Tersembunyi

Baru di versi 4. 4

Indeks tersembunyi tidak terlihat oleh perencana kueri dan tidak dapat digunakan untuk mendukung kueri

Dengan menyembunyikan indeks dari perencana, pengguna dapat mengevaluasi potensi dampak penurunan indeks tanpa benar-benar menghapus indeks. Jika pengaruhnya negatif, pengguna dapat memperlihatkan indeks alih-alih harus membuat ulang indeks yang dijatuhkan. Dan karena indeks dipertahankan sepenuhnya saat disembunyikan, indeks segera tersedia untuk digunakan setelah ditampilkan

Kecuali untuk indeks _id, Anda dapat menyembunyikan indeks apa pun

Penggunaan Indeks

Indeks dapat meningkatkan efisiensi operasi baca. Tutorial Menganalisis Kinerja Kueri memberikan contoh statistik eksekusi kueri dengan dan tanpa indeks

Untuk informasi tentang bagaimana MongoDB memilih indeks yang akan digunakan, lihat

Indeks dan Kolasi

Collation memungkinkan pengguna untuk menentukan aturan khusus bahasa untuk perbandingan string, seperti aturan huruf dan tanda aksen

Untuk menggunakan indeks untuk perbandingan string, operasi juga harus menentukan pemeriksaan yang sama. Artinya, indeks dengan collation tidak dapat mendukung operasi yang melakukan perbandingan string pada field yang diindeks jika operasi menentukan collation yang berbeda.

Misalnya, koleksi

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )
9 memiliki indeks pada bidang string
db.myColl.find( { category: "cafe" } )
0 dengan lokal pemeriksaan
db.myColl.find( { category: "cafe" } )
1

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

Operasi kueri berikut, yang menentukan susunan yang sama dengan indeks, dapat menggunakan indeks

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

Namun, operasi kueri berikut, yang secara default menggunakan penyusun biner "sederhana", tidak dapat menggunakan indeks

db.myColl.find( { category: "cafe" } )

Untuk indeks majemuk di mana kunci awalan indeks bukan string, larik, dan dokumen yang disematkan, operasi yang menentukan susunan berbeda masih dapat menggunakan indeks untuk mendukung perbandingan pada kunci awalan indeks

Misalnya, koleksi

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )
9 memiliki indeks majemuk pada bidang numerik
db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )
5 dan
db.myColl.find( { category: "cafe" } )
4 dan bidang string
db.myColl.find( { category: "cafe" } )
0;

db.myColl.createIndex(   { score: 1, price: 1, category: 1 },   { collation: { locale: "fr" } } )

Operasi berikut, yang menggunakan

db.myColl.find( { category: "cafe" } )
_7 binary collation untuk perbandingan string, dapat menggunakan indeks

db.myColl.find( { score: 5 } ).sort( { price: 1 } )db.myColl.find( { score: 5, price: { $gt: NumberDecimal( "10" ) } } ).sort( { price: 1 } )

Operasi berikut, yang menggunakan susunan biner

db.myColl.find( { category: "cafe" } )
_7 untuk perbandingan string pada bidang
db.myColl.find( { category: "cafe" } )
0 yang diindeks, dapat menggunakan indeks untuk memenuhi hanya bagian
db.myColl.createIndex(   { score: 1, price: 1, category: 1 },   { collation: { locale: "fr" } } )
0 dari kueri

db.myColl.find( { score: 5, category: "cafe" } )

Untuk informasi lebih lanjut tentang collation, lihat halaman referensi collation

Indeks berikut hanya mendukung perbandingan biner sederhana dan tidak mendukung

  • indeks teks,

  • indeks 2d, dan

  • indeks geoHaystack

Kueri Tercakup

Ketika kriteria kueri dan kueri hanya menyertakan bidang yang diindeks, MongoDB mengembalikan hasil langsung dari indeks tanpa memindai dokumen apa pun atau memasukkan dokumen ke dalam memori. Kueri tertutup ini bisa sangat efisien

Untuk informasi selengkapnya tentang kueri tercakup, lihat

Persimpangan Indeks

MongoDB dapat menggunakan persimpangan indeks untuk memenuhi kueri. Untuk kueri yang menentukan kondisi kueri majemuk, jika satu indeks dapat memenuhi sebagian dari kondisi kueri, dan indeks lain dapat memenuhi bagian lain dari kondisi kueri, maka MongoDB dapat menggunakan perpotongan dua indeks untuk memenuhi kueri. Apakah penggunaan indeks majemuk atau penggunaan persimpangan indeks lebih efisien tergantung pada kueri dan sistem tertentu

Untuk detail tentang persimpangan indeks, lihat Persimpangan Indeks

Batasan

Pembatasan tertentu berlaku untuk indeks, seperti panjang kunci indeks atau jumlah indeks per koleksi. Lihat detailnya

Pertimbangan Tambahan

Meskipun indeks dapat meningkatkan kinerja kueri, indeks juga menghadirkan beberapa pertimbangan operasional. Lihat untuk informasi lebih lanjut

Aplikasi mungkin mengalami penurunan kinerja selama pembuatan indeks, termasuk akses baca/tulis terbatas ke koleksi. Untuk informasi selengkapnya tentang proses pembuatan indeks, lihat , termasuk bagian

Beberapa driver mungkin menentukan indeks, menggunakan

db.myColl.createIndex(   { score: 1, price: 1, category: 1 },   { collation: { locale: "fr" } } )
1 daripada
db.myColl.createIndex(   { score: 1, price: 1, category: 1 },   { collation: { locale: "fr" } } )
2 sebagai spesifikasi. Ini tidak mempengaruhi indeks yang dihasilkan

Bagaimana cara memeriksa indeks di PHP?

Fungsi PHP array_key_exists() . Fungsi mengembalikan true jika kunci yang ditentukan ditemukan dalam array jika tidak mengembalikan false.

Bagaimana check array diatur atau tidak di PHP?

Fungsi is_array() memeriksa apakah suatu variabel adalah array atau bukan. Fungsi ini mengembalikan true (1) jika variabelnya adalah array, jika tidak mengembalikan false/nothing.

Bagaimana Anda memeriksa apakah suatu indeks valid dalam array?

Untuk memeriksa apakah ada indeks array, akses array pada indeks tertentu dan periksa apakah hasilnya tidak sama dengan undefined . Jika hasilnya tidak sama dengan undefined indeks array ada.

Bagaimana menemukan indeks array di PHP?

Kita bisa mendapatkan indeks array dengan menggunakan fungsi array_search() . Fungsi ini digunakan untuk mencari elemen yang diberikan.