Maison base de données tutoriel mysql bitmap 索引和 B-tree 索引在使用中如何选择

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

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

现在,我们知道优化器如何对这些技术做出反应,清楚地说明 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 索引可以导致一个严重的锁问题。

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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment réparer l'utilisation du disque à 100 % sous Windows 11 Comment réparer l'utilisation du disque à 100 % sous Windows 11 Apr 20, 2023 pm 12:58 PM

Comment réparer l'utilisation du disque à 100 % sous Windows 11 Le moyen le plus simple de trouver l'application ou le service problématique provoquant une utilisation du disque à 100 % consiste à utiliser le Gestionnaire des tâches. Pour ouvrir le Gestionnaire des tâches, cliquez avec le bouton droit sur le menu Démarrer et sélectionnez Gestionnaire des tâches. Cliquez sur l'en-tête de colonne Disque pour voir ce qui utilise le plus de ressources. À partir de là, vous aurez une bonne idée de par où commencer. Cependant, le problème peut être plus grave que la simple fermeture d'une application ou la désactivation d'un service. Poursuivez votre lecture pour découvrir d'autres causes potentielles de problèmes et comment les résoudre. La désactivation de la fonctionnalité SuperfetchSuperfetch (également connue sous le nom de SysMain dans Windows 11) permet de réduire le temps de démarrage en accédant aux fichiers de prélecture

Comment masquer des fichiers et des dossiers et les supprimer de la recherche dans Windows 11 ? Comment masquer des fichiers et des dossiers et les supprimer de la recherche dans Windows 11 ? Apr 26, 2023 pm 11:07 PM

<h2>Comment masquer des fichiers et des dossiers de la recherche sous Windows 11</h2><p>La première chose que nous devons examiner est de personnaliser l'emplacement des fichiers de recherche Windows. En ignorant ces emplacements spécifiques, vous devriez pouvoir voir les résultats plus rapidement tout en masquant tous les fichiers que vous souhaitez protéger. </p><p>Si vous souhaitez exclure des fichiers et des dossiers des recherches sous Windows 11, procédez comme suit : </p><ol&

Voici 6 façons de réparer la barre de recherche de Windows 11 non disponible. Voici 6 façons de réparer la barre de recherche de Windows 11 non disponible. May 08, 2023 pm 10:25 PM

Si votre barre de recherche ne fonctionne pas sous Windows 11, il existe quelques moyens rapides de la rendre opérationnelle en un rien de temps ! Tout système d'exploitation Microsoft peut rencontrer des problèmes de temps en temps, et les derniers systèmes d'exploitation ne sont pas exemptés de cette règle. De plus, comme l'a souligné l'utilisateur u/zebra_head1 sur Reddit, la même erreur apparaît sur Windows 11 avec 22H2Build22621.1413. Les utilisateurs se sont plaints de la disparition aléatoire de l'option permettant de basculer le champ de recherche de la barre des tâches. Par conséquent, vous devez être prêt à affronter n’importe quelle situation. Pourquoi ne puis-je pas taper dans la barre de recherche de mon ordinateur ? L’incapacité de taper sur l’ordinateur peut être attribuée à différents facteurs et processus. Voici quelques éléments dont vous devez être conscient : Ctfmon.

Quels sont les types d'index Oracle ? Quels sont les types d'index Oracle ? Nov 16, 2023 am 09:59 AM

Les types d'index Oracle incluent : 1. Index B-Tree ; 2. Index Bitmap ; 3. Index de fonction ; 5. Index de clé inversée ; Index de connexion bitmap ; 10. Index composite. Introduction détaillée : 1. L'index B-Tree est une structure de données arborescente auto-équilibrée qui peut prendre en charge efficacement les opérations simultanées. Dans la base de données Oracle, l'index B-Tree est le type d'index le plus couramment utilisé. 2. L'index Bit Graph est basé sur un type d'index ; sur l'algorithme bitmap et ainsi de suite.

La recherche Outlook de Windows 11 ne fonctionne pas : 6 correctifs La recherche Outlook de Windows 11 ne fonctionne pas : 6 correctifs Apr 22, 2023 pm 09:46 PM

Exécutez l'utilitaire de résolution des problèmes de recherche et d'indexation dans Outlook L'un des correctifs les plus simples que vous pouvez démarrer consiste à exécuter l'utilitaire de résolution des problèmes de recherche et d'indexation. Pour exécuter l'utilitaire de résolution des problèmes sous Windows 11 : cliquez sur le bouton Démarrer ou appuyez sur la touche Windows et sélectionnez Paramètres dans le menu. Lorsque les paramètres s'ouvrent, sélectionnez Système > Dépannage > Dépannage supplémentaire. Faites défiler vers le bas sur le côté droit, recherchez SearchandIndexing et cliquez sur le bouton Exécuter. Sélectionnez Recherche Outlook pour ne renvoyer aucun résultat et continuez avec les instructions à l'écran. Lorsque vous l'exécuterez, l'utilitaire de résolution des problèmes identifiera et résoudra automatiquement le problème. Après avoir exécuté l'utilitaire de résolution des problèmes, ouvrez Outlook et voyez si la recherche fonctionne correctement. comme

Comment résoudre le problème selon lequel l'index dépasse la limite du tableau Comment résoudre le problème selon lequel l'index dépasse la limite du tableau Nov 15, 2023 pm 05:22 PM

Les solutions sont les suivantes : 1. Vérifiez si la valeur d'index est correcte : confirmez d'abord si votre valeur d'index dépasse la plage de longueur du tableau. L'index du tableau commence à 0, donc la valeur maximale de l'index doit être la longueur du tableau moins 1 ; Vérifiez les conditions aux limites de la boucle : si vous utilisez des index pour accéder au tableau dans une boucle, assurez-vous que les conditions aux limites de la boucle sont correctes ; 3. Initialisez le tableau : avant d'utiliser un tableau, assurez-vous que le tableau a été correctement initialisé ; 4. Utilisez la gestion des exceptions : vous pouvez utiliser le mécanisme de gestion des exceptions dans le programme pour détecter les erreurs lorsque l'index dépasse les limites du tableau. et gérez-le en conséquence.

PHP renvoie la chaîne de la position de début à la position de fin d'une chaîne dans une autre chaîne PHP renvoie la chaîne de la position de début à la position de fin d'une chaîne dans une autre chaîne Mar 21, 2024 am 10:31 AM

Cet article expliquera en détail comment PHP renvoie la chaîne de la position de début à la position de fin d'une chaîne dans une autre chaîne. L'éditeur pense que c'est assez pratique, je le partage donc avec vous comme référence, j'espère que vous finirez de lire. cet article. Vous pouvez tirer quelque chose de cet article. Utilisez la fonction substr() en PHP pour extraire des sous-chaînes d'une chaîne. La fonction substr() peut extraire des caractères dans une plage spécifiée d'une chaîne. La syntaxe est la suivante : substr(string,start,length) où : string : la chaîne d'origine à partir de laquelle la sous-chaîne doit être extraite. start : L'index de la position de départ de la sous-chaîne (à partir de 0). length (facultatif) : la longueur de la sous-chaîne. Si non précisé, alors

Comment améliorer l'efficacité du regroupement et de l'agrégation de données en PHP et MySQL via des index ? Comment améliorer l'efficacité du regroupement et de l'agrégation de données en PHP et MySQL via des index ? Oct 15, 2023 am 11:39 AM

Comment améliorer l'efficacité du regroupement et de l'agrégation de données en PHP et MySQL via des index ? Introduction : PHP et MySQL sont actuellement les langages de programmation et les systèmes de gestion de bases de données les plus utilisés, et sont souvent utilisés pour créer des applications Web et traiter de grandes quantités de données. Le regroupement et l'agrégation de données sont des opérations courantes lors du traitement de grandes quantités de données, mais si les index ne sont pas conçus et utilisés de manière appropriée, ces opérations peuvent devenir très inefficaces. Cet article présentera comment utiliser les index pour améliorer l'efficacité du regroupement et de l'agrégation de données dans PHP et MySQL, et améliorer

See all articles