Rumah pangkalan data tutorial mysql 通过案例学调优之--Index FULL SCAN和Index FAST FULL SCAN

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

Jun 07, 2016 pm 04:46 PM
scan Kes lulus

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

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)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
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)

go语言的scan方法有什么用 go语言的scan方法有什么用 Mar 15, 2021 pm 04:46 PM

在go语言中,Scan()方法用于从标准输入“os.Stdin”读取文本,即从终端获取数据。该方法会返回成功读取的数据个数和遇到的任何错误;如果读取的数据个数比提供的参数少,会返回一个错误报告原因。

Analisis standard web biasa dan kes sebenar mereka Analisis standard web biasa dan kes sebenar mereka Jan 13, 2024 pm 03:50 PM

Fahami standard Web biasa dan kes aplikasi praktikalnya Dalam era digital hari ini, World Wide Web telah menjadi platform penting untuk orang ramai mendapatkan maklumat, berkomunikasi dan menjalankan aktiviti perniagaan. Piawaian web adalah asas untuk memastikan halaman web dipaparkan secara normal dan beroperasi secara stabil pada pelayar yang berbeza. Artikel ini akan memperkenalkan beberapa standard web biasa dan menggambarkan kepentingannya melalui kes aplikasi praktikal. Pertama sekali, HTML (Hypertext Markup Language) ialah bahagian paling asas dalam piawaian Web dan digunakan untuk menerangkan struktur dan kandungan halaman web. HTML menggunakan tag untuk menentukan sama ada

Selesaikan masalah pengesanan persekitaran apabila memasang semula sistem Selesaikan masalah pengesanan persekitaran apabila memasang semula sistem Jan 08, 2024 pm 03:33 PM

Bagaimana untuk menyelesaikan masalah bahawa ujian persekitaran gagal apabila memasang semula sistem dan perlu ditulis semula Sebabnya ialah: telefon mudah alih anda boleh memasang perisian anti-virus seperti Pengurus Mudah Alih untuk anti-virus fail disimpan di dalam telefon bimbit, menyebabkan memori berjalan telefon bimbit itu diduduki. Kosongkan cache telefon untuk menyelesaikan masalah ini 3. Memori telefon terlalu banyak diduduki oleh perisian dan fail yang disimpan Tidak ada masalah untuk memadamkan fail dan perisian yang tidak diperlukan dengan kerap Selagi konfigurasi perkakasan anda memenuhi keperluan pemasangan, anda boleh gunakan yang baharu secara langsung. Pasang semula sistem daripada cakera sistem! Anda boleh menggunakan pemacu kilat USB atau cakera keras untuk memasang, yang sangat pantas. Tetapi kuncinya ialah menggunakan cakera sistem dengan keserasian yang baik (menyokong pemasangan dalam mod IDE, ACHI, dan RAID), dan ia boleh diaktifkan secara automatik dan kekal, yang telah disahkan. jadi

Mengeluarkan kes IoT selama empat tahun berturut-turut, Qualcomm dan rakan kongsi ekologi bersama-sama melukis pelan tindakan baharu untuk era penyepaduan digital-sebenar Mengeluarkan kes IoT selama empat tahun berturut-turut, Qualcomm dan rakan kongsi ekologi bersama-sama melukis pelan tindakan baharu untuk era penyepaduan digital-sebenar Oct 13, 2023 pm 08:25 PM

Pada barisan pengeluaran yang sibuk, senjata robotik bekerjasama dengan cekap, dan pengendali boleh mengawal keseluruhan proses dengan mudah melalui kawalan masa nyata jauh. Di bawah lombong itu, pakar teknikal memakai cermin mata AR dan menggunakan maklumat yang dipaparkan dalam masa nyata dalam cermin mata untuk menyelesaikan masalah peralatan dengan cepat dengan pasukan teknikal beribu batu jauhnya. Di taman, kenderaan penghantaran tanpa pemandu ulang-alik dengan bebas, membolehkan pengguna mengambil pakej tanpa meninggalkan rumah. Senario ini bukan rekaan, tetapi kes sebenar yang muncul dalam "Koleksi Kes Transformasi Digital Qualcomm Memperkasakan Perusahaan 2023" yang dikeluarkan baru-baru ini oleh Qualcomm Selama empat tahun berturut-turut, Qualcomm telah mengeluarkan "Internet Perkara" yang memfokuskan pada arah pembangunan utama dan menyerlahkan. senario pelaksanaan industri Internet of Things "Application Case Collection" memaparkan hala tuju teknologi terkini industri dan model kerjasama ekologi yang inovatif dalam cara berbilang dimensi dan tiga dimensi. Koleksi kes tahun ini memberi tumpuan kepada penggunaan Qualcomm Technologies oleh syarikat China

Kes pembangunan PHP: membuat komuniti soal jawab dalam talian Kes pembangunan PHP: membuat komuniti soal jawab dalam talian Oct 27, 2023 am 11:25 AM

Pada zaman Internet hari ini, semakin ramai orang suka mencari jawapan dan berkomunikasi dengan soalan dalam talian. Akibatnya, pelbagai komuniti soal jawab dalam talian muncul. Komuniti ini menyediakan platform untuk pengguna bertanya, menjawab soalan dan bertukar pengalaman dan pengetahuan antara satu sama lain. Hari ini, kami akan memperkenalkan proses pengeluaran komuniti Soal Jawab dalam talian yang dibangunkan berdasarkan PHP. Pertama, kita perlu menjelaskan fungsi yang perlu dimiliki oleh komuniti Soal Jawab dalam talian. Secara umumnya, ia harus merangkumi aspek berikut: pendaftaran pengguna, log masuk, soalan, balasan

Kes pengaturcaraan berorientasikan objek dalam PHP Kes pengaturcaraan berorientasikan objek dalam PHP Jun 11, 2023 am 09:56 AM

Sebagai bahasa pengaturcaraan sebelah pelayan yang popular, PHP menyediakan fungsi pengaturcaraan berorientasikan objek yang kaya. Pengaturcaraan Berorientasikan Objek (OOP) ialah kaedah pengaturcaraan yang memudahkan pembangunan dan penyelenggaraan dengan membahagikan sistem yang kompleks kepada berbilang objek berasingan. Artikel ini akan memperkenalkan kes pengaturcaraan berorientasikan objek dalam PHP dan menunjukkan aplikasi pengaturcaraan berorientasikan objek dalam PHP melalui contoh mudah. 1. Konsep pengaturcaraan berorientasikan objek Dalam PHP, berorientasikan objek

Perkongsian kes praktikal perpustakaan fungsi PHP Perkongsian kes praktikal perpustakaan fungsi PHP Jun 15, 2023 pm 09:06 PM

PHP ialah bahasa pengaturcaraan back-end yang sangat popular dalam pembangunan laman web moden. Dari masa ke masa, semakin banyak perpustakaan fungsi PHP telah dibangunkan, membolehkan pembangun menulis program dengan lebih pantas dan meningkatkan kebolehgunaan semula kod. Dalam artikel ini, kami akan berkongsi beberapa kes perpustakaan fungsi PHP praktikal untuk membantu pembangun menggunakan pustaka fungsi ini dengan lebih baik untuk meningkatkan kecekapan pembangunan mereka. Perkhidmatan Penyimpanan Objek (OSS) Alibaba Cloud OSSSDK Alibaba Cloud ialah perkhidmatan storan awan yang sangat tersedia dan berskala tinggi. Pemaju boleh

Kes praktikal pengaturcaraan generik golang Kes praktikal pengaturcaraan generik golang Jan 20, 2024 am 10:43 AM

Kes aplikasi praktikal pengaturcaraan generik Golang, yang memerlukan contoh kod khusus Pengenalan: Dengan pembangunan pengkomputeran awan, data besar dan kecerdasan buatan, cabaran yang dihadapi oleh jurutera pembangunan perisian semakin meningkat dari hari ke hari. Ciri generik bahasa pengaturcaraan boleh menyediakan penyelesaian yang lebih cekap dan fleksibel, dan Golang, sebagai bahasa pengaturcaraan moden, akhirnya memperkenalkan sokongan untuk pengaturcaraan generik dalam versi 1.18. Dalam artikel ini, kami akan berkongsi beberapa kes aplikasi praktikal pengaturcaraan generik Golang dan memberikan contoh kod khusus. Permudahkan pelaksanaan kontena

See all articles