Rumah pangkalan data tutorial mysql 类型转换导致执行计划不走索引测试案例

类型转换导致执行计划不走索引测试案例

Jun 07, 2016 pm 04:01 PM
membawa kepada melaksanakan Kes ujian menaip indeks rancangan Tukar

测试环境模拟: SQL drop table t_col_type purge; create table t_col_type(id varchar2(20),col2 varchar2(20),col3 varchar2(20)); insert into t_col_type select rownum,abc,efg from dual connect by level=10000; commit; create index idx_id on t_c

测试环境模拟:
SQL> drop table t_col_type purge;
create table t_col_type(id varchar2(20),col2 varchar2(20),col3 varchar2(20));
insert into t_col_type select rownum,'abc','efg' from dual connect by level commit;
create index idx_id on t_col_type(id);
set linesize 1000
set autotrace traceonlydrop table t_col_type purge
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> select * from t_col_type where id=6;

Execution Plan
----------------------------------------------------------
Plan hash value: 3191204463

--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 36 | 8 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL | T_COL_TYPE | 1 | 36 | 8 (0)| 00:00:01 |
--------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

1 - filter(TO_NUMBER("ID")=6)

Note
-----
- dynamic sampling used for this statement


Statistics
----------------------------------------------------------
5 recursive calls
0 db block gets
64 consistent gets
0 physical reads
0 redo size
640 bytes sent via SQL*Net to client
469 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed

这里好像有点奇怪啊,明明建了index [create index idx_id on t_col_type(id);]但是为啥没有用到呢?

---查看表上列是否有索引
SQL> select index_name , table_name,column_name from all_ind_columns where table_name ='T_COL_TYPE';

INDEX_NAME
------------------------------------------------------------
TABLE_NAME
------------------------------------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
IDX_ID
T_COL_TYPE
ID

----查看表结构
SQL> desc scott.T_COL_TYPE
Name Null? Type
----------------------------------------- -------- ----------------------------
ID VARCHAR2(20)----------注意这里的字符类型
COL2 VARCHAR2(20)
COL3 VARCHAR2(20)


再次关注下 执行计划中的谓语信息:
1 - filter(TO_NUMBER("ID")=6) ----------这里发生了类型转换

所以在执行计划中就无法用已有的索引,那么如何才能让他正确走索引呢?

select * from t_col_type where id='6';------注意下这里的区别加了单引号,表明这是个字符,

Execution Plan
----------------------------------------------------------
Plan hash value: 3998173245

------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 36 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID | T_COL_TYPE | 1 | 36 | 2 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IDX_ID | 1 | | 1 (0)| 00:00:01 |
------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("ID"='6')

Note
-----
- dynamic sampling used for this statement


Statistics
----------------------------------------------------------
9 recursive calls
0 db block gets
39 consistent gets
1 physical reads
0 redo size
640 bytes sent via SQL*Net to client
469 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Petua praktikal untuk menukar huruf Inggeris lebar penuh kepada bentuk separuh lebar Petua praktikal untuk menukar huruf Inggeris lebar penuh kepada bentuk separuh lebar Mar 26, 2024 am 09:54 AM

Petua praktikal untuk menukar huruf Inggeris lebar penuh kepada bentuk separuh lebar Dalam kehidupan moden, kita sering bersentuhan dengan huruf Inggeris, dan kita sering perlu memasukkan huruf Inggeris apabila menggunakan komputer, telefon bimbit dan peranti lain. Walau bagaimanapun, kadangkala kita menemui huruf Inggeris lebar penuh, dan kita perlu menggunakan bentuk separuh lebar. Jadi, bagaimana untuk menukar huruf Inggeris lebar penuh kepada bentuk separuh lebar? Berikut adalah beberapa petua praktikal untuk anda. Pertama sekali, huruf dan nombor Inggeris lebar penuh merujuk kepada aksara yang menduduki kedudukan lebar penuh dalam kaedah input, manakala huruf dan nombor Inggeris separuh lebar menduduki kedudukan lebar penuh.

Apakah pendapat anda tentang furmark - Bagaimanakah furmark dianggap layak? Apakah pendapat anda tentang furmark - Bagaimanakah furmark dianggap layak? Mar 19, 2024 am 09:25 AM

Apakah pendapat anda tentang furmark? 1. Tetapkan "Mod Jalankan" dan "Mod Paparan" dalam antara muka utama, dan juga laraskan "Mod Ujian" dan klik butang "Mula". 2. Selepas menunggu seketika, anda akan melihat keputusan ujian, termasuk pelbagai parameter kad grafik. Bagaimanakah furmark layak? 1. Gunakan mesin pembakar furmark dan semak hasilnya selama kira-kira setengah jam Ia pada asasnya berlegar sekitar 85 darjah, dengan puncak 87 darjah dan suhu bilik 19 darjah. Casis besar, 5 port kipas casis, dua di hadapan, dua di atas, dan satu di belakang, tetapi hanya satu kipas dipasang. Semua aksesori tidak overclock. 2. Dalam keadaan biasa, suhu biasa kad grafik hendaklah antara "30-85℃". 3. Walaupun suhu ambien terlalu tinggi pada musim panas, suhu biasa ialah "50-85℃"

Bagaimana untuk menukar muzik qq kepada format mp3 Tukar muzik qq kepada format mp3 pada telefon mudah alih Bagaimana untuk menukar muzik qq kepada format mp3 Tukar muzik qq kepada format mp3 pada telefon mudah alih Mar 21, 2024 pm 01:21 PM

QQ Music membolehkan semua orang menikmati menonton filem dan menghilangkan kebosanan Anda boleh menggunakan perisian ini setiap hari untuk memenuhi keperluan anda dengan mudah Sebilangan besar lagu berkualiti tinggi tersedia untuk didengari oleh semua orang Lain kali anda mendengarnya, anda tidak memerlukan sambungan Internet Lagu yang dimuat turun di sini bukan dalam format MP3 dan tidak boleh digunakan pada platform lain Selepas lagu keahlian tamat, tiada cara untuk mendengarnya lagi , ramai rakan ingin menukar lagu ke dalam format MP3 Di sini editornya Anda sediakan kaedah supaya semua orang boleh menggunakannya! 1. Buka QQ Music pada komputer anda, klik butang [Menu Utama] di penjuru kanan sebelah atas, klik [Audio Transcoding], pilih pilihan [Tambah Lagu], dan tambah lagu yang perlu ditukar; lagu, klik untuk memilih Tukar kepada [mp3]

Penjelasan terperinci tentang kaedah pelaksanaan menukar bulan PHP kepada bulan Inggeris Penjelasan terperinci tentang kaedah pelaksanaan menukar bulan PHP kepada bulan Inggeris Mar 21, 2024 pm 06:45 PM

Artikel ini akan memperkenalkan secara terperinci cara menukar bulan dalam PHP kepada bulan Inggeris, dan memberikan contoh kod khusus. Dalam pembangunan PHP, kadangkala kita perlu menukar bulan digital kepada bulan Inggeris, yang sangat praktikal dalam beberapa pemprosesan tarikh atau senario paparan data. Prinsip pelaksanaan, contoh kod khusus dan langkah berjaga-jaga akan diterangkan secara terperinci di bawah. 1. Prinsip pelaksanaan Dalam PHP, anda boleh menukar bulan digital kepada bulan Bahasa Inggeris dengan menggunakan kelas DateTime dan kaedah format. Tarikh

Sertai pengembaraan Xianxia baharu! Pramuat turun 'Zhu Xian 2' 'Wuwei Test' kini tersedia Sertai pengembaraan Xianxia baharu! Pramuat turun 'Zhu Xian 2' 'Wuwei Test' kini tersedia Apr 22, 2024 pm 12:50 PM

"Ujian Inaction" bagi MMORPG dongeng fantasi baharu "Zhu Xian 2" akan dilancarkan pada 23 April. Apakah jenis kisah pengembaraan dongeng baharu yang akan berlaku di Benua Zhu Xian beribu-ribu tahun selepas karya asal? The Six Realm Immortal World, akademi abadi sepenuh masa, kehidupan abadi percuma, dan semua jenis keseronokan di dunia abadi sedang menunggu rakan-rakan abadi untuk meneroka secara peribadi! Pra-muat turun "Wuwei Test" kini dibuka Rakan-rakan Fairy boleh pergi ke laman web rasmi untuk memuat turun Anda tidak boleh log masuk ke pelayan permainan sebelum pelayan dilancarkan sudah selesai. Waktu pembukaan "Zhu Xian 2" "Inaction Test": 23 April 10:00 - 6 Mei 23:59 Bab pengembaraan dongeng baharu sekuel ortodoks kepada Zhu Xian "Zhu Xian 2" adalah berdasarkan novel "Zhu Xian" sebagai cetak biru Berdasarkan pandangan dunia karya asal, latar belakang permainan ditetapkan

Tutorial PHP: Bagaimana untuk menukar jenis int kepada rentetan Tutorial PHP: Bagaimana untuk menukar jenis int kepada rentetan Mar 27, 2024 pm 06:03 PM

Tutorial PHP: Cara Menukar Jenis Int kepada Rentetan Dalam PHP, menukar data integer kepada rentetan adalah operasi biasa. Tutorial ini akan memperkenalkan cara menggunakan fungsi terbina dalam PHP untuk menukar jenis int kepada rentetan, sambil memberikan contoh kod khusus. Gunakan cast: Dalam PHP, anda boleh menggunakan cast untuk menukar data integer kepada rentetan. Kaedah ini sangat mudah Anda hanya perlu menambah (rentetan) sebelum data integer untuk menukarnya menjadi rentetan. Di bawah ialah kod contoh mudah

Bagaimana untuk menukar huruf Inggeris lebar penuh kepada huruf separuh lebar Bagaimana untuk menukar huruf Inggeris lebar penuh kepada huruf separuh lebar Mar 25, 2024 pm 02:45 PM

Cara menukar huruf Inggeris lebar penuh kepada huruf separuh lebar Dalam kehidupan harian dan kerja, kadangkala kita menghadapi situasi di mana kita perlu menukar huruf Inggeris lebar penuh kepada huruf separuh lebar, seperti semasa memasukkan kata laluan komputer, mengedit dokumen atau mereka bentuk susun atur. Huruf dan nombor Inggeris lebar penuh merujuk kepada aksara dengan lebar yang sama dengan aksara Cina, manakala huruf Inggeris separuh lebar merujuk kepada aksara dengan lebar yang lebih sempit. Dalam operasi sebenar, kita perlu menguasai beberapa kaedah mudah untuk menukar huruf Inggeris lebar penuh kepada huruf separuh lebar supaya kita boleh memproses teks dan nombor dengan lebih mudah. 1. Huruf Inggeris lebar penuh dan huruf Inggeris separuh lebar

Apakah perbezaan antara ujian fungsi dan liputan dalam bahasa yang berbeza? Apakah perbezaan antara ujian fungsi dan liputan dalam bahasa yang berbeza? Apr 27, 2024 am 11:30 AM

Ujian fungsional mengesahkan kefungsian fungsi melalui ujian kotak hitam dan kotak putih, manakala liputan kod mengukur bahagian kod yang diliputi oleh kes ujian. Bahasa yang berbeza (seperti Python dan Java) mempunyai rangka kerja ujian, alat liputan dan ciri yang berbeza. Kes praktikal menunjukkan cara menggunakan Unittest and Coverage Python dan JUnit dan JaCoCo Java untuk ujian fungsi dan penilaian liputan.

See all articles