Oracle索引空值问题,当在有空值得列上建立单列索引时,如果搜索条件为 is null 在解释计划中可以看到,对于此列oracle并没有使用
1、Oracle索引空值问题
当在有空值得列上建立单列索引时,如果搜索条件为 is null 在解释计划中可以看到,对于此列oracle并没有使用索引查询;
但是当建立的是多列索引是,就会按照索引来进行查询。
2、B-树索引
示意图:
在B-树索引中,将会按照从上到下的顺序进行索引。如果列的选择度不低的话,索引扫描就会很慢。原因就在于要遍历很多的叶子快来取出不同的行编号。
随着出入数据的增多,最右侧的叶子块也在一直的增大,可能会导致缓冲区的繁忙等待。这种类型的最右侧索引的快速增长被称为 右侧增长索引 。后面将谈到一些解决方法。
3、位图索引
位图索引不适合用于需要大量DML操作的表(DML指除select以外的SQL语句)。适合用于大多数数据具有较少的唯一的列进行的只读运算的数据仓库表。
位图索引要注意的一点是。更新一个具有位图索引的列,,必须要更新位图索引。
4、分区索引
4.1、局部索引
局部索引使用LOCAL关键字来建立。
create index index_name on table_name (column_name) local;
当用到分区索引的时候,会直接查找匹配分区的内容,而不是查询每个分区。
4.2、全局索引
全局索引用GLOBAL来创建
4.3、散列分区
回归到B-数索引中所说到的右侧增长索引问题,就可以用散列分区的方式来进行分区。
与范围分区的方式不同散列分区是把所有的数据均匀的分布在不同的分区内。具体方法如下:
--范围分区
create table table2
partition by range(year)
(partition p_2012 values less than (2013),
partition p_2013 values less than (2014),
partition p_2014 values less than (2015),
partition p_max values less than (maxvalue)
)
as
select * from table1;
--散列分区
drop sequence sf;
create sequence sf cache 200;
drop table table3;
create table table3
partition by hash(sid)
partitions 32
as
select sf.nextval sid,t.* from table1 t;
--通过以下代码可以查到
select dbms_rowid.rowid_object(rowid) obj_id,count(*) from table3
group by dbms_rowid.rowid_object(rowid);
OBJ_ID COUNT(*)
---------- ----------
86232 4717
86236 4571
86240 4696
86257 4633
86234 4547
86235 4580
86241 4717
86249 4589
86250 4612
86251 4623
86261 4742
86238 4578
……
create unique index index_table3_sid on table3(sid) local;
select * from table3_sid where sid =10000;
--查看其解释计划,可以得到
5、压缩索引
压缩索引是B-树索引的一个变体,更适合于引导列中具有重复值的列
create index index_name on table_name(column1,column2,column3) compress N;
其中N为压缩前几项。例如N=2就是压缩column1,column2这两项索引。
压缩索引适用于引导列具有较少唯一值的索引。
6、基于函数的索引
create create index index_name on table_name(function_name(column1));
在select是必须加上function_name(column1)才能使用索引,只用column1的话,还是全表扫描。
7、反转键索引
也是一种解决右侧增长索引问题的一种方法,但是因为索引是反转的所以不能使用范围运算符
create index index_name on table_name (column_name) global reverse;
不常用,因为会引起其他的一些负面影响
Oracle之索引(Index)实例讲解 - 基础
Oracle | PL/SQL唯一索引(Unique Constraint)用法
Oracle全文索引的性能优势实例
Oracle非关键文件恢复,redo、临时文件、索引文件、密码文件
Oracle索引表空间数据文件丢失及重建
Oracle 实现基于函数的索引
Oracle索引被抑制情况
Oracle 重建索引脚本
本文永久更新链接地址:

MySQL is suitable for beginners to learn database skills. 1. Install MySQL server and client tools. 2. Understand basic SQL queries, such as SELECT. 3. Master data operations: create tables, insert, update, and delete data. 4. Learn advanced skills: subquery and window functions. 5. Debugging and optimization: Check syntax, use indexes, avoid SELECT*, and use LIMIT.

MySQL efficiently manages structured data through table structure and SQL query, and implements inter-table relationships through foreign keys. 1. Define the data format and type when creating a table. 2. Use foreign keys to establish relationships between tables. 3. Improve performance through indexing and query optimization. 4. Regularly backup and monitor databases to ensure data security and performance optimization.

MySQL is an open source relational database management system that is widely used in Web development. Its key features include: 1. Supports multiple storage engines, such as InnoDB and MyISAM, suitable for different scenarios; 2. Provides master-slave replication functions to facilitate load balancing and data backup; 3. Improve query efficiency through query optimization and index use.

SQL is used to interact with MySQL database to realize data addition, deletion, modification, inspection and database design. 1) SQL performs data operations through SELECT, INSERT, UPDATE, DELETE statements; 2) Use CREATE, ALTER, DROP statements for database design and management; 3) Complex queries and data analysis are implemented through SQL to improve business decision-making efficiency.

The basic operations of MySQL include creating databases, tables, and using SQL to perform CRUD operations on data. 1. Create a database: CREATEDATABASEmy_first_db; 2. Create a table: CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY, titleVARCHAR(100)NOTNULL, authorVARCHAR(100)NOTNULL, published_yearINT); 3. Insert data: INSERTINTObooks(title, author, published_year)VA

The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

The steps to build a MySQL database include: 1. Create a database and table, 2. Insert data, and 3. Conduct queries. First, use the CREATEDATABASE and CREATETABLE statements to create the database and table, then use the INSERTINTO statement to insert the data, and finally use the SELECT statement to query the data.

MySQL is suitable for beginners because it is easy to use and powerful. 1.MySQL is a relational database, and uses SQL for CRUD operations. 2. It is simple to install and requires the root user password to be configured. 3. Use INSERT, UPDATE, DELETE, and SELECT to perform data operations. 4. ORDERBY, WHERE and JOIN can be used for complex queries. 5. Debugging requires checking the syntax and use EXPLAIN to analyze the query. 6. Optimization suggestions include using indexes, choosing the right data type and good programming habits.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Dreamweaver CS6
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Notepad++7.3.1
Easy-to-use and free code editor