Maison base de données tutoriel mysql 通过案例学调优之--Index FULL SCAN和Index FAST FULL SCAN

通过案例学调优之--Index FULL SCAN和Index FAST FULL SCAN

Jun 07, 2016 pm 04:46 PM
scan 案例 passer

通过案例学调优之--IndexFULLSCAN和IndexFASTFULLSCANIndexFULLSCAN和ndexFASTFULLSCAN工作原理:IndexFULLSCAN和IndexFASTFULLSCAN的适用情况:适用于我们想选


    INDEX FAST FULL SCAN:
HINT写法:INDEX_FFS(表名 索引名)
原理:从段头开始,读取包含位图块,ROOT BLOCK,所有的BRANCH BLOCK,LEAF BLOCK,读取的顺序完全有物理存储位置决定,并采取多块读,每次读取DB_FILE_MULTIBLOCK_READ_COUNT个块。查询某个表记录总数的时候,往往基于PRIMARY KEY的INDEX FAST FULL SCAN是最有效的。

Fast Full Index Scans :
Fast full index scans are an alternative to a full table scan when the index contains all the columns that are needed for the query, and at least one column in the index key has the NOT NULL constraint. A fast full scan accesses the data in the index itself, without accessing the table. It cannot be used to eliminate a sort operation, because the data is not ordered by the index key. It reads the entire index using multiblock reads, unlike a full index scan, and can be parallelized.

Fast full scan is available only with the CBO. You can specify it with the initialization parameter OPTIMIZER_FEATURES_ENABLE or the INDEX_FFS hint. Fast full index scans cannot be performed against bitmap indexes.

A fast full scan is faster than a normal full index scan in that it can use multiblock I/O and can be parallelized just like a table scan.

Full Table Scans : 
This type of scan reads all rows from a table and filters out those that do not meet the selection criteria. During a full table scan, all blocks in the table that are under the high water mark are scanned. Each row is examined to determine whether it satisfies the statement’s WHERE clause.

When Oracle performs a full table scan, the blocks are read sequentially. Because the blocks are adjacent, I/O calls larger than a single block can be used to speed up the process. The size of the read calls range from one block to the number of blocks indicated by the initialization parameter DB_FILE_MULTIBLOCK_READ_COUNT. Using multiblock reads means a full table scan can be performed very efficiently. Each block is read only once.


案例分析:


1、创建表和索引

16:02:10 SYS@ prod >create table t as select * from dba_objects where 1=2; Table created. 16:05:43 SYS@ prod >insert into t select * from dba_objects where object_id is not null; 73025 rows created. 16:06:46 SYS@ prod >select count(*) from t;   COUNT(*) ----------      73025       16:06:56 SYS@ prod >commit; Commit complete. 16:13:48 SYS@ prod >exec dbms_stats.gather_table_stats('SYS','T',cascade=>true); PL/SQL procedure successfully completed. 16:14:33 SYS@ prod >set autotrace trace 16:15:32 SYS@ prod >select object_id from t; 73025 rows selected. Execution Plan ---------------------------------------------------------- Plan hash value: 1601196873 -------------------------------------------------------------------------- | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     | -------------------------------------------------------------------------- |   0 | SELECT STATEMENT  |      | 73025 |   356K|   284   (1)| 00:00:04 | |   1 |  TABLE ACCESS FULL| T    | 73025 |   356K|   284   (1)| 00:00:04 | -------------------------------------------------------------------------- Statistics ----------------------------------------------------------         141  recursive calls           0  db block gets        5857  consistent gets        1038  physical reads           0  redo size     1060958  bytes sent via SQL*Net to client       53963  bytes received via SQL*Net from client        4870  SQL*Net roundtrips to/from client           4  sorts (memory)           0  sorts (disk)       73025  rows processed   从上面的执行计划中可知,此时走了全表扫描。   --由于我们需要查询的列为object_id,因此理论上只需要读取索引就应该可以返回所有数据,而此时为什么是全表扫描呢?   --这是因为NULL值与索引的特性所决定的。即null值不会被存储到B树索引。因此应该为表 t 的列 object_id 添加 not null 约束。         16:16:14 SYS@ prod >desc t;  Name                                                              Null?    Type  ----------------------------------------------------------------- -------- --------------------------------------------  OWNER                                                                      VARCHAR2(30)  OBJECT_NAME                                                                VARCHAR2(128)  SUBOBJECT_NAME                                                             VARCHAR2(30)  OBJECT_ID                                                                  NUMBER  DATA_OBJECT_ID                                                             NUMBER  OBJECT_TYPE                                                                VARCHAR2(19)  CREATED                                                                    DATE  LAST_DDL_TIME                                                              DATE  TIMESTAMP                                                                  VARCHAR2(19)  STATUS                                                                     VARCHAR2(7)  TEMPORARY                                                                  VARCHAR2(1)  GENERATED                                                                  VARCHAR2(1)  SECONDARY                                                                  VARCHAR2(1)  NAMESPACE                                                                  NUMBER  EDITION_NAME                                                               VARCHAR2(30)    在object_id上添加not null约束 16:16:42 SYS@ prod >alter table t modify(object_id not null); Table altered. Elapsed: 00:00:00.34 16:16:46 SYS@ prod >desc t  Name                                                              Null?    Type  ----------------------------------------------------------------- -------- --------------------------------------------  OWNER                                                                      VARCHAR2(30)  OBJECT_NAME                                                                VARCHAR2(128)  SUBOBJECT_NAME                                                             VARCHAR2(30)  OBJECT_ID                                                         NOT NULL NUMBER  DATA_OBJECT_ID                                                             NUMBER  OBJECT_TYPE                                                                VARCHAR2(19)  CREATED                                                                    DATE  LAST_DDL_TIME                                                              DATE  TIMESTAMP                                                                  VARCHAR2(19)  STATUS                                                                     VARCHAR2(7)  TEMPORARY                                                                  VARCHAR2(1)  GENERATED                                                                  VARCHAR2(1)  SECONDARY                                                                  VARCHAR2(1)  NAMESPACE                                                                  NUMBER  EDITION_NAME                                                               VARCHAR2(30)

2、对Index_FS和Index_FFS对比

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)

Analyse des standards web courants et de leurs cas concrets Analyse des standards web courants et de leurs cas concrets Jan 13, 2024 pm 03:50 PM

Comprendre les normes Web courantes et leurs cas d'application pratiques À l'ère numérique d'aujourd'hui, le World Wide Web est devenu une plate-forme importante permettant aux utilisateurs d'obtenir des informations, de communiquer et de mener des activités commerciales. Les normes Web constituent la base permettant de garantir que les pages Web s'affichent normalement et fonctionnent de manière stable sur différents navigateurs. Cet article présentera quelques standards Web courants et illustrera leur importance à travers des cas d’application pratiques. Tout d’abord, HTML (Hypertext Markup Language) est la partie la plus fondamentale des standards Web et est utilisé pour décrire la structure et le contenu des pages Web. HTML utilise des balises pour définir si

Résoudre le problème de détection de l'environnement lors de la réinstallation du système Résoudre le problème de détection de l'environnement lors de la réinstallation du système Jan 08, 2024 pm 03:33 PM

Comment résoudre le problème selon lequel le test d'environnement échoue lors de la réinstallation du système et doit être réécrit. La raison est la suivante : le téléphone mobile est empoisonné. Vous pouvez installer un logiciel antivirus tel que Mobile Manager pour l'antivirus 2. De nombreux fichiers indésirables. les fichiers sont stockés à l'intérieur du téléphone mobile, ce qui entraîne l'occupation de la mémoire active du téléphone mobile. Effacez simplement le cache du téléphone pour résoudre ce problème. 3. La mémoire du téléphone est trop occupée par les logiciels et les fichiers enregistrés. Il n'y a aucun problème à supprimer fréquemment les fichiers et les logiciels inutiles tant que votre configuration matérielle répond aux exigences d'installation. utilisez le nouveau directement. Réinstallez le système à partir du disque système ! Vous pouvez utiliser une clé USB ou un disque dur pour l'installation, ce qui est très rapide. Mais la clé est d'utiliser un disque système avec une bonne compatibilité (prend en charge l'installation en modes IDE, ACHI et RAID), et il peut être activé automatiquement et en permanence, ce qui a été vérifié. donc

A quoi sert la méthode scan en langage go ? A quoi sert la méthode scan en langage go ? Mar 15, 2021 pm 04:46 PM

Dans le langage Go, la méthode Scan() est utilisée pour lire le texte de l'entrée standard "os.Stdin", c'est-à-dire pour obtenir des données du terminal. Cette méthode renverra le nombre de données lues avec succès et toutes les erreurs rencontrées ; si le nombre de données lues est inférieur aux paramètres fournis, une raison du rapport d'erreur sera renvoyée.

En publiant des cas IoT pendant quatre années consécutives, Qualcomm et ses partenaires écologiques dessinent conjointement un nouveau modèle pour l'ère de l'intégration numérique-réel En publiant des cas IoT pendant quatre années consécutives, Qualcomm et ses partenaires écologiques dessinent conjointement un nouveau modèle pour l'ère de l'intégration numérique-réel Oct 13, 2023 pm 08:25 PM

Sur les lignes de production très fréquentées, les bras robotiques collaborent efficacement et les opérateurs peuvent facilement contrôler l'ensemble du processus grâce au contrôle à distance en temps réel. Sous la mine, les experts techniques portent des lunettes AR et utilisent les informations affichées en temps réel dans les lunettes pour résoudre rapidement les problèmes d'équipement avec l'équipe technique à des milliers de kilomètres de là. Dans le parc, des véhicules de livraison sans pilote font la navette librement, permettant aux utilisateurs de récupérer leurs colis sans quitter leur domicile. Ces scénarios ne sont pas fictifs, mais des cas réels qui apparaissent dans la « 2023 Qualcomm Empowering Enterprise Digital Transformation Case Collection » récemment publiée par Qualcomm. Pendant quatre années consécutives, Qualcomm a publié « l'Internet des objets » en se concentrant sur les principales orientations et points forts du développement. Scénarios de mise en œuvre de l'industrie de l'Internet des objets. La « Collection de cas d'application » présente les dernières orientations technologiques de l'industrie et les modèles de coopération écologique innovants de manière multidimensionnelle et tridimensionnelle. La collection de cas de cette année se concentre sur l’utilisation des technologies Qualcomm par les entreprises chinoises.

Cas de développement PHP : créer une communauté de questions et réponses en ligne Cas de développement PHP : créer une communauté de questions et réponses en ligne Oct 27, 2023 am 11:25 AM

À l'ère d'Internet d'aujourd'hui, de plus en plus de personnes aiment trouver des réponses et communiquer avec des questions en ligne. En conséquence, diverses communautés de questions et réponses en ligne ont émergé. Ces communautés offrent une plate-forme permettant aux utilisateurs de poser des questions, de répondre à des questions et d'échanger des expériences et des connaissances entre eux. Aujourd'hui, nous allons présenter le processus de production d'une communauté de questions-réponses en ligne développée sur la base de PHP. Tout d’abord, nous devons clarifier les fonctions qu’une communauté de questions-réponses en ligne doit avoir. De manière générale, il doit inclure les aspects suivants : enregistrement des utilisateurs, connexion, questions, réponses.

Cas de programmation orientée objet en PHP Cas de programmation orientée objet en PHP Jun 11, 2023 am 09:56 AM

En tant que langage de programmation côté serveur populaire, PHP fournit de riches fonctions de programmation orientées objet. La programmation orientée objet (POO) est une méthode de programmation qui simplifie le développement et la maintenance en divisant un système complexe en plusieurs objets distincts. Cet article présentera des cas de programmation orientée objet en PHP et démontrera l'application de la programmation orientée objet en PHP à travers un exemple simple. 1. Le concept de programmation orientée objet En PHP, orienté objet

Partage de cas pratiques de la bibliothèque de fonctions PHP Partage de cas pratiques de la bibliothèque de fonctions PHP Jun 15, 2023 pm 09:06 PM

PHP est un langage de programmation back-end très populaire dans le développement de sites Web modernes. Au fil du temps, de plus en plus de bibliothèques de fonctions PHP ont été développées, permettant aux développeurs d'écrire des programmes plus rapidement et d'améliorer la réutilisabilité du code. Dans cet article, nous partagerons quelques cas pratiques de bibliothèques de fonctions PHP pour aider les développeurs à mieux utiliser ces bibliothèques de fonctions afin d'améliorer leur efficacité de développement. Alibaba Cloud OSSSDK Le service de stockage d'objets (OSS) d'Alibaba Cloud est un service de stockage cloud hautement disponible et hautement évolutif. Les développeurs peuvent

Cas pratiques de programmation générique Golang Cas pratiques de programmation générique Golang Jan 20, 2024 am 10:43 AM

Cas d'application pratiques de la programmation générique Golang, nécessitant des exemples de code spécifiques Introduction : Avec le développement du cloud computing, du big data et de l'intelligence artificielle, les défis auxquels sont confrontés les ingénieurs en développement logiciel augmentent de jour en jour. Les fonctionnalités génériques des langages de programmation peuvent fournir des solutions plus efficaces et plus flexibles, et Golang, en tant que langage de programmation moderne, a finalement introduit la prise en charge de la programmation générique dans la version 1.18. Dans cet article, nous partagerons quelques cas d'application pratiques de la programmation générique Golang et fournirons des exemples de code spécifiques. Simplifiez la mise en œuvre des conteneurs

See all articles