memesan". Fitur menggunakan opsi pengindeksan "Indeks dengan tambahan

Hari ini kita akan berbicara tentang indeks MS SQL DBMS dan struktur internalnya. Saya akan mencoba berbicara tentang indeks baik dari sudut pandang DBMS maupun dari sudut pandang 1C 8.3.

Indeks adalah sekumpulan tautan yang diurutkan berdasarkan kolom tertentu, dibuat untuk mengoptimalkan kinerja DBMS MS SQL.

Membuat indeks secara implisit:

Platform membuat indeks sendiri menggunakan kunci data yang diketahui sebelumnya untuk setiap objek metadata (tautan, kode, nama, pengukuran, dll.)

Membuat Indeks Secara Eksplisit mungkin dalam tiga cara:

  1. Menyetel tanda “Indeks” untuk suatu bidang (atribut/dimensi). Opsi "Indeks dengan tambahan" pemesanan" menambahkan bidang "Kode" atau "Nama" ke indeks (terutama untuk ).
  2. Menambahkan bidang ke " ".
  3. Menentukan bidang yang diindeks dalam kueri menggunakan konstruksi “ “.

Dapatkan 267 pelajaran video di 1C gratis:

Indeks di Microsoft SQL DBMS

Indeks di DBMS MS SQL adalah halaman dengan data masing-masing 8 KB. Meskipun indeks dirancang untuk meningkatkan kinerja DBMS, indeks memiliki kelemahan tertentu - indeks menghabiskan ruang disk dan memperlambat DBMS dalam menulis baris.

Jenis indeks di MS SQL DBMS:

  1. Indeks yang tidak berkerumun— indeks tersebut tidak membangun kembali tabel, tetapi hanya mengatur tautan.
  2. Indeks Berkelompok diperlukan untuk membangun tabel sesuai dengan indeks. Data disusun, misalnya berdasarkan abjad. Tidak valid untuk sering berganti kolom, karena DBMS terus-menerus membangun kembali tabel secara fisik menggunakan indeks ini.
  3. Indeks unik- semacam "superstruktur" untuk indeks berkerumun dan tidak berkerumun. Indeks seperti itu unik berdasarkan bidang kunci.

Jenis kunci dalam DBMS:

  • Kunci utama— sekumpulan kolom yang secara unik menjadi ciri suatu baris.
  • Kunci asing (asing)— bidang tabel yang menyimpan nilai kunci utama untuk tujuan mengatur hubungan antar tabel. 1C tidak menggunakan kunci jenis ini.

Nuansa penting dalam menggunakan indeks

Penggunaan indeks yang tepat dapat mempercepat kueri tidak hanya beberapa kali lipat, namun ratusan, terkadang bahkan ribuan kali lipat.

Akselerasi seperti ini tidak dapat dicapai dengan perangkat keras. Oleh karena itu, topik ini perlu mendapat perhatian yang cermat.

Seringkali, untuk mempercepat kueri, Anda perlu membuat indeks Anda sendiri, dan ada beberapa cara berbeda untuk melakukannya.

Dalam video tutorial kita akan melihat beberapa cara untuk membuat indeks. Kami juga akan mempertimbangkan situasi ketika indeks komposisi yang diperlukan tidak dapat dibuat menggunakan alat platform standar dan harus dibuat di DBMS.

Menyiapkan indeks menggunakan alat platform standar

Pelajaran ini menunjukkan indeks apa yang sebenarnya dibuat untuk objek di tingkat DBMS.
Tidak semua hal dalam topik ini sejelas kelihatannya pada pandangan pertama. Memang, sejumlah objek memiliki kekhasan tersendiri dalam membuat indeks.
Kami akan melihat semua detailnya di video ini.

Pengindeksan dengan pemesanan tambahan

Video menunjukkan perbedaan antara opsi konstruksi indeks Indeks dari Indeks dengan tambahan Memerintah.
Contoh ini menunjukkan jenis indeks yang akan dibuat platform saat menggunakan pemesanan tambahan.

Membuat Indeks untuk Dimensi Register

Pengindeksan register dimensi pertama memiliki beberapa nuansa.
Video menunjukkan indeks apa yang dibuat untuk pengukuran register. Situasi pengindeksan dimensi register pertama juga dipertimbangkan.

atau

Mengapa pengembang 1C perlu “mengindeks” dimensi dan detail register?

- Nah, Anda punya permintaan! - database berkata dan digantung...

Jawaban singkat terhadap pertanyaan judul adalah hal ini akan memungkinkan kueri berjalan dengan cepat dan mengurangi dampak negatif penguncian pada .

Apa itu indeks?

Mengoptimalkan Penempatan Indeks

Ketika volume tabel tidak memungkinkannya untuk “muat” dalam RAM server, kecepatan subsistem disk (I/O) menjadi prioritas utama. Dan di sini Anda dapat memperhatikan kemampuan untuk menempatkan indeks dalam file terpisah yang terletak di hard drive berbeda.

Penjelasan rinci tentang tindakan http://technet.microsoft.com/ru-ru/perpustakaan/MS175905.aspx
Menggunakan indeks dari grup file berbeda akan meningkatkan kinerja indeks non-cluster karena konkurensi proses I/O dan pengerjaan indeks itu sendiri.
Untuk menentukan dimensinya, Anda dapat menggunakan proses yang disebutkan di atas.

Dampak indeks pada kunci

Tidak adanya indeks yang diperlukan untuk suatu kueri berarti mengulangi semua catatan tabel, yang pada gilirannya menyebabkan kunci yang berlebihan, yaitu. catatan yang tidak perlu diblokir. Selain itu, semakin lama waktu yang dibutuhkan untuk menyelesaikan kueri karena indeks hilang, semakin lama waktu penahanan kuncinya.
Alasan lain terjadinya kunci adalah sedikitnya jumlah record dalam tabel. Dalam hal ini, SQL Server, ketika memilih rencana eksekusi kueri, tidak menggunakan indeks, tetapi merayapi seluruh tabel (Pemindaian Tabel), memblokir seluruh tabel. Untuk menghindari pemblokiran tersebut, perlu menambah jumlah record dalam tabel menjadi 1500-2000. Dalam kasus ini, pemindaian tabel menjadi lebih mahal dan SQL Server mulai menggunakan indeks. Tentu saja, hal ini tidak selalu dapat dilakukan; sejumlah direktori seperti “Organisasi”, “Gudang”, “Divisi”, dll. biasanya memiliki sedikit entri. Dalam kasus ini, pengindeksan tidak akan meningkatkan kinerja.

Kinerja indeks

Kami telah mencatat dalam judul artikel bahwa kami tertarik pada pengaruh indeks pada kinerja kueri. Jadi, indeks paling cocok untuk jenis tugas berikut:

  • Kueri yang menentukan kriteria pencarian “sempit”. Kueri tersebut harus membaca hanya sejumlah kecil baris yang memenuhi kriteria tertentu.
  • Kueri yang menentukan rentang nilai. Kueri ini juga perlu membaca sejumlah kecil baris.
  • Pencarian yang digunakan dalam menghubungkan operasi. Kolom, yang sering digunakan sebagai kunci pengikat, sangat bagus untuk indeks.
  • Pencarian di mana data dibaca dalam urutan tertentu. Jika kumpulan hasil akan diurutkan dalam urutan indeks berkerumun, maka tidak diperlukan pengurutan karena kumpulan hasil sudah diurutkan sebelumnya. Misalnya, jika indeks berkerumun dibuat pada kolom nama belakang, nama depan, dan aplikasi memerlukan pengurutan berdasarkan nama belakang dan kemudian berdasarkan nama depan, maka tidak perlu menambahkan klausa ORDER BY.

Benar, dengan semua kegunaan indeks, ada satu TETAPI yang sangat penting - indeks harus “digunakan secara efisien” dan harus memungkinkan data ditemukan menggunakan lebih sedikit operasi I/O dan jumlah sumber daya sistem. Sebaliknya, indeks yang tidak digunakan (jarang digunakan) cenderung menurunkan kinerja penulisan data (karena setiap operasi yang mengubah data juga harus memperbarui halaman indeks) dan menciptakan ruang database berlebih.

Penutup(untuk permintaan tertentu) disebut indeks yang berisi semua bidang yang diperlukan untuk permintaan ini. Misalnya, jika indeks dibuat pada kolom a, b, dan c, dan pernyataan SELECT mengkueri data hanya dari kolom tersebut, maka hanya akses ke indeks yang diperlukan.

Untuk menentukan efektivitas indeks, kita dapat memperkirakan secara kasar menggunakan layanan online gratis yang menunjukkan “rencana eksekusi kueri” dan indeks yang digunakan.

Saat mendeskripsikan detail berbagai objek dalam metadata, properti Indeks dapat disetel. Properti ini memungkinkan pengembang konfigurasi untuk menunjukkan kepada sistem perlunya membuat indeks terpisah dalam database untuk detail terkait.

Selain opsi "Indeks" di properti ini, untuk sebagian besar objek, Anda dapat menyetel opsi "Indeks dengan pemesanan tambahan". Opsi ini ditujukan terutama untuk digunakan dalam daftar dinamis.

Dalam opsi "Indeks", indeks dibuat langsung berdasarkan detailnya. Indeks juga dilengkapi dengan tautan untuk memastikan urutan catatan tertentu dalam indeks ketika nilai atribut diulang.

Dalam opsi "Indeks dengan pemesanan tambahan", indeks dibuat berdasarkan atribut, serta beberapa bidang yang biasanya digunakan untuk mengurutkan objek jenis ini. Untuk direktori, indeks, bergantung pada representasi utama, dilengkapi dengan kode atau nama. Dan untuk sebuah dokumen, indeksnya dilengkapi dengan tanggal. Indeks ini juga dilengkapi dengan link.

Dalam opsi "Indeks", daftar dinamis dapat memberikan tampilan informasi dalam jumlah besar yang efisien dengan pengurutan berdasarkan atribut ini, karena indeks yang dibuat akan digunakan untuk ini.

Opsi "Indeks dengan pengurutan tambahan" dalam daftar dinamis dapat memberikan tampilan efektif atas sejumlah besar informasi dengan pemilihan berdasarkan nilai atribut tertentu dan dengan pengurutan yang sesuai dengan pengurutan utama untuk objek tertentu. Dalam hal ini, keberadaan indeks yang menyertakan atribut yang digunakan untuk melakukan pemilihan dan bidang pemesanan utama akan memungkinkan sistem untuk menggunakan indeks saat melihat daftar.

Tentu saja, indeks juga mempengaruhi cara lain untuk mengambil informasi (memperoleh data menggunakan metode pengelola objek atau kueri).

Oleh karena itu, saat menentukan opsi untuk properti Indeks, Anda harus melanjutkan dari opsi pengambilan informasi mana yang perlu dioptimalkan terlebih dahulu. Misalnya, jika Anda perlu melihat daftar dengan pilihan berdasarkan detail, maka masuk akal untuk menggunakan opsi “Indeks dengan pemesanan tambahan”. Dan jika indeks diperlukan, misalnya hanya untuk mencari dengan menanyakan objek berdasarkan detail yang diberikan tanpa memesan, maka lebih baik menggunakan opsi “Indeks” sehingga indeks yang dibuat memerlukan lebih sedikit sumber daya sistem.

Komposisi indeks yang dihasilkan oleh sistem untuk berbagai kombinasi properti metadata dirinci dalam artikel “Indeks Tabel Database”.