Rumah pangkalan data tutorial mysql bitmap 索引和 B-tree 索引在使用中如何选择

bitmap 索引和 B-tree 索引在使用中如何选择

Jun 07, 2016 pm 05:55 PM
B-Tree bitmap indeks

现在,我们知道优化器如何对这些技术做出反应,清楚地说明 bitmap 索引和 B-tree 索引各自的最好应用

现在,我们知道优化器如何对这些技术做出反应,清楚地说明 bitmap 索引和 B-tree 索引各自的最好应用。
在 GENDER 列适当地带一个 bitmap 索引,在 SAL 列上创建另外一个位图索引,然后执行一些查询。在这些列上,用 B-tree 索引重新执行查询。
从 TEST_NORMAL 表,查询工资为如下的男员工:
1000
1500
2000
2500
3000
3500
4000
4500
因此:
SQL> select * from test_normal
2 where sal in (1000,1500,2000,2500,3000,3500,4000,4500,5000) and GENDER='M';
已选择444行。

执行计划
----------------------------------------------------------
Plan hash value: 4115571900
--------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost(%CPU)| Time |
--------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 39 | 1 (0)| 00:00:01 |
|* 1 | TABLE ACCESS BY INDEX ROWID | TEST_NORMAL | 1 | 39 | 1 (0)| 00:00:01 |
| 2 | BITMAP CONVERSION TO ROWIDS| | | | | |
|* 3 | BITMAP INDEX SINGLE VALUE | NORMAL_GENDER_BMX | | | | |
--------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("SAL"=1000 OR "SAL"=1500 OR "SAL"=2000 OR "SAL"=2500 OR "SAL"=3000
OR
"SAL"=3500 OR "SAL"=4000 OR "SAL"=4500 OR "SAL"=5000)
3 - access("GENDER"='M')

统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
6280 consistent gets
0 physical reads
0 redo size
25451 bytes sent via SQL*Net to client
839 bytes received via SQL*Net from client
31 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
444 rows processed
SQL>
这是一个典型的数据仓库查询,不要再 OLTP(On-Line Transaction Processing,联机事务处理系统)系统上执行。下面是 bitmap 索引的结果:
而 B-tree 索引的查询:
SQL> select * from test_normal
2 where sal in (1000,1500,2000,2500,3000,3500,4000,4500,5000) and GENDER='M';

已选择444行。

执行计划
----------------------------------------------------------
Plan hash value: 654360527
-------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 39 | 2 (0)| 00:00:01 |
|* 1 | TABLE ACCESS BY INDEX ROWID| TEST_NORMAL | 1 | 39 | 2 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | NORMAL_GENDER_IDX | 1 | | 2 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("SAL"=1000 OR "SAL"=1500 OR "SAL"=2000 OR "SAL"=2500 OR "SAL"=3000
OR
"SAL"=3500 OR "SAL"=4000 OR "SAL"=4500 OR "SAL"=5000)
2 - access("GENDER"='M')

统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
6854 consistent gets
0 physical reads
0 redo size
25451 bytes sent via SQL*Net to client
839 bytes received via SQL*Net from client
31 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
444 rows processed
SQL>
对 B-tree 索引,优化器选择了全表扫描,而在 bitmap 索引的情况下,使用了索引。可以通过 IO 推断出性能。
一般,bitmap 索引对 DSS 最合适,而不管基数怎么样,原因如下:

对于 bitmap 索引,优化器可能高效低相应包含 AND、OR 或 XOR 的查询。(Oracle 支持动态的 B-tree 到 bitmap 转换,但是效率不是很高。
对 bitmap 索引,当查询或计数 null 时,优化器会响应查询。null 值也被 bitmap 索引索引(这不同于 B-tree 索引)。

更重要的是,DSS 系统的 bitmap 索引支持 ad hoc 查询,而 B-tree 索引则不。更特别地,如果你有带 50 列的一个表,而用户频繁查询它们中的 10 个——或所有 10 个列的组合,或一个列——创建 B-tree 索引将会很困难。如果你在这些所有的列上创建 10 个 bitmap 索引,那么所有的查询都会被这些索引响应,而不论是在 10 个列上查询,还是 4、6 个列,或只一个列。AND_EQUAL 优化器提示为 B-tree 索引提供这个功能,但是不能超过 5 个索引。bitmap 索引就没有这个限制。

相比之下,B-tree 索引很适合 OLTP 应用程序,这样的系统用户查询比较常规(在部署前,可以调整),与 ad hoc 查询相对,它不是很频繁,在飞业务高峰时间执行。因为,OLTP 系统经常更新和删除,所以,在这种情况下,bitmap 索引可以导致一个严重的锁问题。

这里的数据是很明显。两个索引目标相同:尽可能快地返回结果。但选择使用哪个完全取决于应用的类型,而不是基数的水平。

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)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan 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)

Bagaimana untuk membetulkan penggunaan cakera 100% pada Windows 11 Bagaimana untuk membetulkan penggunaan cakera 100% pada Windows 11 Apr 20, 2023 pm 12:58 PM

Cara Membetulkan Penggunaan Cakera 100% pada Windows 11 Cara mudah untuk mencari aplikasi atau perkhidmatan yang bermasalah yang menyebabkan penggunaan cakera 100% adalah dengan menggunakan Pengurus Tugas. Untuk membuka Pengurus Tugas, klik kanan pada menu Mula dan pilih Pengurus Tugas. Klik pengepala lajur Cakera untuk melihat perkara yang menggunakan paling banyak sumber. Dari situ, anda akan mendapat idea yang baik tentang tempat untuk bermula. Walau bagaimanapun, masalahnya mungkin lebih serius daripada hanya menutup aplikasi atau melumpuhkan perkhidmatan. Teruskan membaca untuk mencari lebih banyak punca masalah yang berpotensi dan cara menyelesaikannya. Melumpuhkan ciri SuperfetchSuperfetch (juga dikenali sebagai SysMain dalam Windows 11) membantu mengurangkan masa permulaan dengan mengakses fail prefetch

Bagaimana untuk menyembunyikan fail dan folder dan mengalih keluarnya daripada carian dalam Windows 11? Bagaimana untuk menyembunyikan fail dan folder dan mengalih keluarnya daripada carian dalam Windows 11? Apr 26, 2023 pm 11:07 PM

<h2>Cara Menyembunyikan Fail dan Folder daripada Carian pada Windows 11</h2><p>Perkara pertama yang perlu kita lihat ialah menyesuaikan lokasi fail Carian Windows. Dengan melangkau lokasi khusus ini, anda sepatutnya dapat melihat hasil dengan lebih cepat sambil menyembunyikan sebarang fail yang anda ingin lindungi. </p><p>Jika anda ingin mengecualikan fail dan folder daripada carian pada Windows 11, gunakan langkah berikut: </p><ol&

Berikut ialah 6 cara untuk membetulkan bar carian Windows 11 tidak tersedia. Berikut ialah 6 cara untuk membetulkan bar carian Windows 11 tidak tersedia. May 08, 2023 pm 10:25 PM

Jika bar carian anda tidak berfungsi dalam Windows 11, terdapat beberapa cara pantas untuk menyediakannya dan berjalan dalam masa yang singkat! Mana-mana sistem pengendalian Microsoft boleh mengalami gangguan dari semasa ke semasa, dan sistem pengendalian terkini tidak terkecuali daripada peraturan ini. Selain itu, seperti yang ditunjukkan oleh pengguna u/zebra_head1 pada Reddit, ralat yang sama muncul pada Windows 11 dengan 22H2Build22621.1413. Pengguna mengadu bahawa pilihan untuk menogol kotak carian bar tugas secara rawak hilang. Oleh itu, anda mesti bersedia untuk sebarang keadaan. Mengapa saya tidak boleh menaip dalam bar carian pada komputer saya? Ketidakupayaan untuk menaip pada komputer boleh dikaitkan dengan faktor dan proses yang berbeza. Berikut ialah beberapa perkara yang perlu anda ketahui: Ctfmon.

Apakah jenis indeks Oracle? Apakah jenis indeks Oracle? Nov 16, 2023 am 09:59 AM

Jenis indeks Oracle termasuk: 1. Indeks B-Tree; 3. Indeks fungsi; Indeks sambungan peta bit; 10. Indeks komposit. Pengenalan terperinci: 1. Indeks B-Tree ialah struktur data pokok pengimbangan sendiri yang boleh menyokong operasi serentak dengan cekap Dalam pangkalan data Oracle, indeks B-Tree ialah jenis indeks yang paling biasa digunakan. Indeks Graf Bit adalah berdasarkan jenis indeks pada algoritma bitmap dan sebagainya.

Carian Outlook Windows 11 Tidak Berfungsi: 6 Pembetulan Carian Outlook Windows 11 Tidak Berfungsi: 6 Pembetulan Apr 22, 2023 pm 09:46 PM

Jalankan Penyelesai Masalah Carian dan Pengindeksan dalam Outlook Salah satu pembetulan yang lebih mudah yang boleh anda mulakan ialah menjalankan Penyelesai Masalah Carian dan Pengindeksan. Untuk menjalankan penyelesai masalah pada Windows 11: Klik butang Mula atau tekan kekunci Windows dan pilih Tetapan daripada menu. Apabila Tetapan dibuka, pilih Sistem > Penyelesaian Masalah > Penyelesaian Masalah Tambahan. Tatal ke bawah di sebelah kanan, cari SearchandIndexing dan klik butang Run. Pilih Carian Outlook untuk tidak mengembalikan hasil dan teruskan dengan arahan pada skrin. Apabila anda menjalankannya, penyelesai masalah akan mengenal pasti dan membetulkan masalah secara automatik. Selepas menjalankan penyelesai masalah, buka Outlook dan lihat jika carian berfungsi dengan betul. suka

Bagaimana untuk menyelesaikan masalah bahawa indeks melebihi had tatasusunan Bagaimana untuk menyelesaikan masalah bahawa indeks melebihi had tatasusunan Nov 15, 2023 pm 05:22 PM

Penyelesaiannya ialah: 1. Semak sama ada nilai indeks adalah betul: mula-mula sahkan sama ada nilai indeks anda melebihi julat panjang tatasusunan. Indeks tatasusunan bermula dari 0, jadi nilai indeks maksimum hendaklah panjang tatasusunan tolak 1. Semak keadaan sempadan gelung: Jika anda menggunakan indeks untuk akses tatasusunan dalam gelung, pastikan syarat sempadan gelung adalah betul; 3. Mulakan tatasusunan: Sebelum menggunakan tatasusunan, pastikan tatasusunan telah dimulakan dengan betul. dan mengendalikannya dengan sewajarnya.

PHP mengembalikan rentetan dari kedudukan mula ke kedudukan akhir rentetan dalam rentetan lain PHP mengembalikan rentetan dari kedudukan mula ke kedudukan akhir rentetan dalam rentetan lain Mar 21, 2024 am 10:31 AM

Artikel ini akan menerangkan secara terperinci bagaimana PHP mengembalikan rentetan dari kedudukan mula ke kedudukan akhir rentetan dalam rentetan lain Editor berpendapat ia agak praktikal, jadi saya berkongsi dengan anda sebagai rujukan artikel ini. Anda boleh memperoleh sesuatu daripada artikel ini. Gunakan fungsi substr() dalam PHP untuk mengekstrak subrentetan daripada rentetan Fungsi substr() boleh mengekstrak aksara dalam julat tertentu daripada rentetan. Sintaksnya adalah seperti berikut: substr(rentetan,mula,panjang) di mana: rentetan: rentetan asal dari mana subrentetan itu akan diekstrak. mula: Indeks kedudukan permulaan subrentetan (bermula dari 0). panjang (pilihan): Panjang subrentetan. Jika tidak dinyatakan, maka

Bagaimana untuk meningkatkan kecekapan pengumpulan data dan pengagregatan data dalam PHP dan MySQL melalui indeks? Bagaimana untuk meningkatkan kecekapan pengumpulan data dan pengagregatan data dalam PHP dan MySQL melalui indeks? Oct 15, 2023 am 11:39 AM

Bagaimana untuk meningkatkan kecekapan pengumpulan data dan pengagregatan data dalam PHP dan MySQL melalui indeks? Pengenalan: PHP dan MySQL kini merupakan bahasa pengaturcaraan dan sistem pengurusan pangkalan data yang paling banyak digunakan, dan sering digunakan untuk membina aplikasi web dan memproses sejumlah besar data. Pengumpulan data dan pengagregatan data adalah operasi biasa apabila memproses sejumlah besar data, tetapi jika indeks tidak direka bentuk dan digunakan dengan sewajarnya, operasi ini boleh menjadi sangat tidak cekap. Artikel ini akan memperkenalkan cara menggunakan indeks untuk meningkatkan kecekapan pengumpulan data dan pengagregatan data dalam PHP dan MySQL, serta menambah baik

See all articles