Heim Datenbank MySQL-Tutorial 通过案例学调优之--Index FULL SCAN和Index FAST FULL SCAN

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

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

通过案例学调优之--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对比

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Analyse gängiger Webstandards und ihrer tatsächlichen Fälle Analyse gängiger Webstandards und ihrer tatsächlichen Fälle Jan 13, 2024 pm 03:50 PM

Verstehen Sie gängige Webstandards und ihre praktischen Anwendungsfälle. Im heutigen digitalen Zeitalter ist das World Wide Web zu einer wichtigen Plattform für Menschen geworden, um Informationen zu erhalten, zu kommunizieren und Geschäftsaktivitäten durchzuführen. Webstandards sind die Grundlage dafür, dass Webseiten normal angezeigt werden und in verschiedenen Browsern stabil funktionieren. In diesem Artikel werden einige gängige Webstandards vorgestellt und ihre Bedeutung anhand praktischer Anwendungsfälle veranschaulicht. Zunächst einmal ist HTML (Hypertext Markup Language) der grundlegendste Teil der Webstandards und wird zur Beschreibung der Struktur und des Inhalts von Webseiten verwendet. HTML verwendet Tags, um zu definieren, ob

Lösen Sie das Problem der Umgebungserkennung bei der Neuinstallation des Systems Lösen Sie das Problem der Umgebungserkennung bei der Neuinstallation des Systems Jan 08, 2024 pm 03:33 PM

So lösen Sie das Problem, dass der Umgebungstest bei der Neuinstallation des Systems fehlschlägt und neu geschrieben werden muss. Sie können Antivirensoftware wie Mobile Manager für Antivirus 2 installieren Dateien werden im Mobiltelefon gespeichert, wodurch der laufende Speicher des Mobiltelefons belegt wird. Löschen Sie einfach den Telefon-Cache, um dieses Problem zu lösen. 3. Der Telefonspeicher ist durch gespeicherte Software und Dateien zu stark belegt. Das häufige Löschen nicht benötigter Dateien und Software ist möglich Verwenden Sie das neue System direkt von der Systemfestplatte! Sie können für die Installation einen USB-Stick oder eine Festplatte verwenden, was sehr schnell geht. Der Schlüssel liegt jedoch darin, eine Systemfestplatte mit guter Kompatibilität zu verwenden (unterstützt die Installation im IDE-, ACHI- und RAID-Modus) und diese kann automatisch und dauerhaft aktiviert werden, was überprüft wurde. Also

Wozu dient die Scan-Methode in der Go-Sprache? Wozu dient die Scan-Methode in der Go-Sprache? Mar 15, 2021 pm 04:46 PM

In der Go-Sprache wird die Scan()-Methode verwendet, um Text aus der Standardeingabe „os.Stdin“ zu lesen, also Daten vom Terminal abzurufen. Diese Methode gibt die Anzahl der erfolgreich gelesenen Daten und alle aufgetretenen Fehler zurück. Wenn die Anzahl der gelesenen Daten unter den angegebenen Parametern liegt, wird ein Fehlerberichtsgrund zurückgegeben.

Qualcomm und ökologische Partner haben vier Jahre in Folge IoT-Fälle veröffentlicht und entwerfen gemeinsam einen neuen Entwurf für das Zeitalter der digital-realen Integration Qualcomm und ökologische Partner haben vier Jahre in Folge IoT-Fälle veröffentlicht und entwerfen gemeinsam einen neuen Entwurf für das Zeitalter der digital-realen Integration Oct 13, 2023 pm 08:25 PM

In stark ausgelasteten Produktionslinien arbeiten Roboterarme effizient zusammen und Bediener können den gesamten Prozess einfach per Fernsteuerung in Echtzeit steuern. Unter der Mine tragen technische Experten eine AR-Brille und nutzen die in der Brille in Echtzeit angezeigten Informationen, um gemeinsam mit dem tausende Kilometer entfernten Technikteam schnell Geräteprobleme zu lösen. Im Park pendeln unbemannte Lieferfahrzeuge frei hin und her, so dass Benutzer Pakete abholen können, ohne das Haus verlassen zu müssen. Bei diesen Szenarien handelt es sich nicht um fiktive, sondern um reale Fälle, die in der kürzlich von Qualcomm veröffentlichten „2023 Qualcomm Empowering Enterprise Digital Transformation Case Collection“ erscheinen. Vier Jahre in Folge hat Qualcomm das „Internet der Dinge“ veröffentlicht, das sich auf die wichtigsten Entwicklungsrichtungen und Highlights konzentriert Umsetzungsszenarien der Internet-of-Things-Branche „Application Case Collection“, die die neuesten technologischen Trends und innovativen ökologischen Kooperationsmodelle mehrdimensional und dreidimensional darstellt. Die diesjährige Fallsammlung konzentriert sich auf den Einsatz von Qualcomm-Technologien durch chinesische Unternehmen

PHP-Entwicklungsfall: Erstellen einer Online-Frage-und-Antwort-Community PHP-Entwicklungsfall: Erstellen einer Online-Frage-und-Antwort-Community Oct 27, 2023 am 11:25 AM

Im heutigen Internetzeitalter möchten immer mehr Menschen online Antworten finden und Fragen beantworten. Dadurch entstanden verschiedene Online-Frage- und Antwort-Communities. Diese Communities bieten Benutzern eine Plattform, um Fragen zu stellen, Fragen zu beantworten und Erfahrungen und Wissen miteinander auszutauschen. Heute stellen wir den Produktionsprozess einer auf PHP basierenden Online-Q&A-Community vor. Zunächst müssen wir klären, welche Funktionen eine Online-Q&A-Community haben muss. Im Allgemeinen sollte es die folgenden Aspekte umfassen: Benutzerregistrierung, Login, Fragen, Antworten

Fälle der objektorientierten Programmierung in PHP Fälle der objektorientierten Programmierung in PHP Jun 11, 2023 am 09:56 AM

Als beliebte serverseitige Programmiersprache bietet PHP umfangreiche objektorientierte Programmierfunktionen. Objektorientierte Programmierung (OOP) ist eine Programmiermethode, die die Entwicklung und Wartung vereinfacht, indem sie ein komplexes System in mehrere separate Objekte aufteilt. In diesem Artikel werden Fälle der objektorientierten Programmierung in PHP vorgestellt und die Anwendung der objektorientierten Programmierung in PHP anhand eines einfachen Beispiels demonstriert. 1. Das Konzept der objektorientierten Programmierung In PHP objektorientiert

Praktische Fallfreigabe der PHP-Funktionsbibliothek Praktische Fallfreigabe der PHP-Funktionsbibliothek Jun 15, 2023 pm 09:06 PM

PHP ist eine sehr beliebte Back-End-Programmiersprache in der modernen Website-Entwicklung. Im Laufe der Zeit wurden immer mehr PHP-Funktionsbibliotheken entwickelt, die es Entwicklern ermöglichen, Programme schneller zu schreiben und die Wiederverwendbarkeit des Codes zu verbessern. In diesem Artikel werden wir einige praktische Fälle von PHP-Funktionsbibliotheken vorstellen, um Entwicklern dabei zu helfen, diese Funktionsbibliotheken besser zu nutzen und ihre Entwicklungseffizienz zu verbessern. Alibaba Cloud OSSSDK Der Object Storage Service (OSS) von Alibaba Cloud ist ein hochverfügbarer und hoch skalierbarer Cloud-Speicherdienst. Entwickler können

Praktische Fälle der generischen Golang-Programmierung Praktische Fälle der generischen Golang-Programmierung Jan 20, 2024 am 10:43 AM

Praktische Anwendungsfälle der generischen Golang-Programmierung, die spezifische Codebeispiele erfordern. Einführung: Mit der Entwicklung von Cloud Computing, Big Data und künstlicher Intelligenz nehmen die Herausforderungen für Softwareentwicklungsingenieure von Tag zu Tag zu. Die generischen Funktionen von Programmiersprachen können effizientere und flexiblere Lösungen bieten, und Golang als moderne Programmiersprache hat in Version 1.18 endlich die Unterstützung für generische Programmierung eingeführt. In diesem Artikel werden wir einige praktische Anwendungsfälle der generischen Golang-Programmierung vorstellen und spezifische Codebeispiele bereitstellen. Vereinfachen Sie die Containerimplementierung

See all articles