Rumah > pangkalan data > Oracle > teks badan

Bagaimanakah Oracle menjadikan indeks tidak sah?

WBOY
Lepaskan: 2022-01-26 10:25:37
asal
11097 orang telah melayarinya

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';
Salin selepas log masuk

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);
Salin selepas log masuk

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: <>, !=, NOT colum >= ?, NOT colum <= ?

Sekatan ini boleh digantikan dengan OR, contohnya: colum <> 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
Salin selepas log masuk

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;
Salin selepas log masuk

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;;
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!