Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Oracle menjadikan indeks tidak sah?

Bagaimanakah Oracle menjadikan indeks tidak sah?

WBOY
WBOYasal
2022-01-26 10:25:3711139semak imbas

Punca kegagalan indeks oracle: 1. Tidak menggunakan klausa WHERE 2. Menggunakan "IS NULL" dan "IS NOT NULL" 3. Menggunakan fungsi dalam klausa WHERE 5 . Gunakan operasi ketaksamaan dalam klausa WHERE 6. Bandingkan jenis data yang tidak sepadan, dsb.

Bagaimanakah Oracle menjadikan indeks tidak sah?

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.

Bagaimana Oracle menjadikan indeks tidak sah?

Matlamat indeks Oracle adalah untuk mengelakkan imbasan jadual penuh dan meningkatkan kecekapan pertanyaan, tetapi kadangkala ia tidak produktif.

Sebagai contoh, terdapat berjuta-juta data dalam jadual, dan indeks ditambahkan pada medan tertentu, tetapi prestasi pertanyaan tidak bertambah baik Ini mungkin disebabkan oleh kegagalan indeks Oracle. Indeks Oracle mempunyai beberapa sekatan Jika anda melanggar sekatan indeks ini, walaupun anda telah menambah indeks, Oracle masih akan melakukan imbasan jadual penuh Prestasi pertanyaan tidak akan bertambah baik berbanding dengan tidak menambah indeks ke pangkalan data Overhed sistem untuk mengekalkan indeks mengakibatkan prestasi yang lebih teruk. Berikut ialah ringkasan tujuh kekangan utama yang boleh menyebabkan indeks Oracle gagal.

1. Tiada klausa WHERE

2. Penggunaan IS NULL dan BUKAN NULL

PILIH ... DARI emp. WHERE comm IS NULL; Indeks pada lajur kom akan menjadi tidak sah

3 Gunakan fungsi dalam klausa WHERE

Jika tiada indeks berasaskan fungsi digunakan, maka klausa where Apabila menggunakan fungsi pada lajur diindeks, pengoptimum akan mengabaikan indeks ini. Contohnya:

select * from staff where trunc(birthdate) = '01-MAY-82';

Tetapi apabila fungsi digunakan pada syarat, indeks boleh berkuat kuasa Tukar pernyataan di atas kepada pernyataan berikut dan anda boleh mencari melalui indeks.

select * from staff where birthdate < (to_date(&#39;01-MAY-82&#39;) + 0.9999);

Nota: Oracle masih menggunakan indeks untuk fungsi MIN, MAX.

4 Gunakan LIKE '%T' untuk pertanyaan kabur

5. Gunakan operasi ketaksamaan dalam klausa WHERE

Tidak sama dengan operasi termasuk: a8093152e673feb7aba1828c43532094, !=, NOT colum >= ?, NOT colum <= ?

Sekatan ini boleh digantikan dengan OR, contohnya: colum a8093152e673feb7aba1828c43532094 0 ===> colum>0 ATAU colum<0

6 indeks yang sama dan julat tidak akan digabungkan

SELECT emp_id, emp_m, salary_q ... FROM emp WHERE job=&#39;manager&#39; AND deptno>10

kerja dan deptno. Indeks bukan unik, dalam kes ini Oracle tidak akan menggabungkan indeks, ia hanya akan menggunakan indeks pertama.

7. Perbandingan tidak sepadan dengan jenis data

dept_id ialah medan varchar2 Terdapat indeks pada medan ini, tetapi pernyataan berikut akan melaksanakan jadual penuh imbasan.

select * from dept where dept_id = 900198;

Ini kerana Oracle akan menukar klausa where secara automatik menjadi to_number(dept_id)=900198, yang bersamaan dengan menggunakan fungsi, yang mengehadkan penggunaan indeks. Cara yang betul untuk menulisnya adalah seperti berikut:

select * from dept where dept_id = &#39;900198&#39;;

Tutorial yang disyorkan: "Tutorial Video Oracle"

Atas ialah kandungan terperinci Bagaimanakah Oracle menjadikan indeks tidak sah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn