Dalam Oracle, anda boleh menggunakan pernyataan "pilih status daripada indeks_pengguna di mana index_name='nama indeks';" untuk menentukan sama ada indeks itu tidak sah jika hasil yang dikembalikan adalah SAH, ini bermakna indeks itu tidak tidak sah, jika tidak, ia bermakna indeks itu tidak sah.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.
Sintaks adalah seperti berikut:
select status from user_indexes where index_name='索引名称';
Jika hasil pulangan adalah SAH, ini bermakna indeks adalah sah!
Contohnya adalah seperti yang ditunjukkan dalam rajah:
Pengetahuan lanjutan:
Penyelesaian kepada kegagalan indeks
1 Pilih pengoptimum Oracle yang sesuai
Terdapat tiga jenis pengoptimum Oracle:
a RULE (berasaskan peraturan) b. PILIH (selektif) ).
Tetapkan pengoptimum lalai melalui pelbagai pengisytiharan parameter OPTIMIZER_MODE dalam fail init.ora, seperti RULE, COST, CHOOSE, ALL_ROWS, FIRST_ROWS. Sudah tentu anda juga mengatasinya pada peringkat pernyataan SQL atau peringkat sesi.
Untuk menggunakan Pengoptimum Berasaskan Kos (CBO, Pengoptimum Berasaskan Kos), anda mesti menjalankan arahan analisis dengan kerap untuk meningkatkan ketepatan statistik objek dalam pangkalan data.
Jika mod pengoptimum pangkalan data ditetapkan kepada terpilih (PILIH), mod pengoptimuman sebenar akan dikaitkan dengan sama ada arahan analisis telah dijalankan. Jika jadual telah dianalisis, mod pengoptimum secara automatik akan menjadi CBO Jika tidak, pangkalan data akan menggunakan bentuk RULE pengoptimum.
(Analisis jadual
analyze table PROD_PARTS compute statistics; ANALYZE TABLE PROD_PARTS COMPUTE STATISTICS FOR ALL INDEXED COLUMNS; analyze table PROD_PARTS compute statistics for table for all indexes for all indexed columns;
) [Selepas kegagalan indeks, selepas berunding dengan DBA, saya mendapati bahawa ia adalah masalah dengan statistik data Penyelesaian khusus adalah untuk melaksanakan pernyataan di atas ]
Secara lalai, Oracle menggunakan pengoptimum CHOOSE Untuk mengelakkan imbasan jadual penuh yang tidak diperlukan, anda mesti cuba mengelak daripada menggunakan pengoptimum CHOOSE dan terus menggunakan pengoptimum berasaskan peraturan atau berasaskan kos.
2. Bina semula indeks
alter index 索引名 rebuild 【online】
3. Paksa indeks
Selepas menambah pembayang pada pernyataan, paksa untuk menggunakan indeks 'RECORD_ENTITYID'
Pernyataan sql menjadi seperti ini
Rujukan
select /*+ index(record,record_entityid) */ * from RECORD where entityId='24' and entityType='blog';
/* index(record,record_entityid) */ In, index bermaksud penggunaan paksa indeks, rekod ialah nama jadual, record_entityid ialah nama indeks. Pelan pelaksanaan adalah konsisten dengan pangkalan data ujian, kedua-duanya menggunakan indeks 'RECORD_ENTITYID' dan logik baca dan tulis juga 4.
Selepas ujian kemudian, selepas menganalisis jadual dan kedua-dua indeks tanpa menambah petunjuk, indeks 'RECORD_ENTITYID' juga boleh digunakan. Walau bagaimanapun, kerana jadual dikemas kini agak kerap, saya tidak tahu berapa lama masa yang diperlukan untuk menganalisisnya semula
Tutorial yang disyorkan: "Tutorial Video Oracle"
Atas ialah kandungan terperinci Bagaimanakah Oracle menentukan sama ada indeks tidak sah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!