検索
ホームページデータベースmysql チュートリアル使用Oracle函数索引简单介绍(一般)

使用Oracle函数索引简单介绍(一般)

Jun 07, 2016 pm 03:45 PM
oracle一般的に導入使用関数単純索引

如果一个函数(function)或表达式(expression)使用了一个表的一列或多 列,则用户可以依据这些函数或表达式为表建立索引,这样的索引被称为函 数索引(Function-Based Index)。函数索引能够计算出函数或表达式的, 并将其保存在索引中。用户创建的函数索

如果一个函数(function)或表达式(expression)使用了一个表的一列或多
列,则用户可以依据这些函数或表达式为表建立索引,这样的索引被称为函
数索引(Function-Based Index)。函数索引能够计算出函数或表达式的值,
并将其保存在索引中。用户创建的函数索引既可以是平衡树类型(B-tree
index)的,也可以是位图类型(bitmap index)的。

用于创建索引的函数可以是一个数学表达式(arithmetic expression),也可以
是使用了 PL/SQL 函数(PL/SQL function),包函数(package function),C
外部调用(C callout),或 SQL 函数(SQL function)的表达式。用于创建索
引的函数不能包含任何聚合函数(ggregate function),如果为用户自定义函
数,则在声明中必须使用 DETERMINISTIC 关键字。例如,

  1. create or replace function f_david(p_value varchar2) return varchar2  
  2.  deterministic is  
  3.  begin  
  4.  return p_value;  
  5.  end;  

如果在一个使用对象类型(object type)的列上建立函数索引,则可以使用此对象的方法(method)
作为函数,例如此对象的 map 方法。用户不能在数据类型为 LOB,REF,或嵌套表(nested table)的列上

建立函数索引,也不能在包含 LOB,REF,或嵌

套表等数据类型的对象类型列上建立函数索引。

使用函数索引

如果一个 SQL 语句的 WHERE 子句中使用了函数,那么建立相应的函数索引
(function-based index)是提高数据访问性能的有效机制。表达式
(expression)的结果经过计算后将被存储在索引中。但是当执行 INSERT 和
UPDATE 语句时,Oracle 需要进行函数运算以便维护索引。

例如,如果用户创建了以下函数索引:
CREATE INDEX idx ON table_1 (a + b * (c - 1), a, b);

当 Oracle 处理如下查询时就可以使用之前建立的索引:
SELECT a FROM table_1 WHERE a + b * (c - 1)

使用 UPPER(column_name) 或 LOWER(column_name) 函数建立函数索引
(function-based index)有助于与大小写无关(case-insensitive)的查询。例如
创建以下函数索引:

CREATE INDEX uppercase_idx ON employees (UPPER
(first_name));

有助于提高以下查询的性能:
SELECT * FROM employees WHERE UPPER(first_name) =
'RICHARD';

函数索引的依赖性

函数索引(function-based index)依赖于索引定义表达式中使用的函数。如果
此函数为 PL/SQL 函数(PL/SQL function)或包函数(package function),当
函数声明(function specification)发生变化时,索引将失效(disabled)。

用户需要被授予(grant)CREATE INDEX 或 CREATE ANY INDEX 权限才能
创建函数索引(function-based index)。

要想使用函数索引(function-based index):
● 建立索引后,表必须经过分析(analyze)。
● 必须保证查询的条件表达式不是 NULL 值, 因为 NULL 值不会被存储到
索引中。

以下各节将讲述使用函数索引的其他需求。

定义函数的权限

函数索引(function-based index)的所有者(owner)必须具备此索引定义中
使用的函数的 EXECUTE 权限。当 EXECUTE 权限被收回(revoke)后,
Oracle 则将索引标识为 DISABLED。索引的所有者无须具备此函数的
EXECUTE WITH GRANT OPTION 权限,即可将索引所在表的 SELECT 权限
授予(grant)其他用户。

解决函数索引的依赖性问题

函数索引(function-based index)依赖于她使用的所有函数。如果函数或函数
所在包的声明(specification)被修改过(或索引所有者对函数的 EXECUTE
权限被收回),将会出现以下情况:
● 索引被标记为 DISABLED。
● 如果优化器(optimizer)选择了在标记为 DISABLED 的索引上执行查
询,那么此查询将失败
● 使用标记为 DISABLED 的索引而执行的 DML 操作将失败,除非此索引
同时被标记为 UNUSABLE 且初始化参数(initialization parameter)
SKIP_UNUSABLE_INDEXES 被设为 TRUE。

函数被修改之后,用户可以使用 ALTER INDEX ... ENABLE 语句将索引重新置
为 ENABLE 状态。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQL:初心者が習得するための必須スキルMySQL:初心者が習得するための必須スキルApr 18, 2025 am 12:24 AM

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQL:構造化データとリレーショナルデータベースMySQL:構造化データとリレーショナルデータベースApr 18, 2025 am 12:22 AM

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQL:説明されている主要な機能と機能MySQL:説明されている主要な機能と機能Apr 18, 2025 am 12:17 AM

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLの目的:MySQLデータベースとの対話SQLの目的:MySQLデータベースとの対話Apr 18, 2025 am 12:12 AM

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

初心者向けのMySQL:データベース管理を開始します初心者向けのMySQL:データベース管理を開始しますApr 18, 2025 am 12:10 AM

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

MySQLの役割:WebアプリケーションのデータベースMySQLの役割:WebアプリケーションのデータベースApr 17, 2025 am 12:23 AM

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

MySQL:最初のデータベースを構築しますMySQL:最初のデータベースを構築しますApr 17, 2025 am 12:22 AM

MySQLデータベースを構築する手順には次のものがあります。1。データベースとテーブルの作成、2。データの挿入、および3。クエリを実行します。まず、createdAtabaseおよびcreateTableステートメントを使用してデータベースとテーブルを作成し、InsertINTOステートメントを使用してデータを挿入し、最後にSelectステートメントを使用してデータを照会します。

MySQL:データストレージに対する初心者向けのアプローチMySQL:データストレージに対する初心者向けのアプローチApr 17, 2025 am 12:21 AM

MySQLは、使いやすく強力であるため、初心者に適しています。 1.MYSQLはリレーショナルデータベースであり、CRUD操作にSQLを使用します。 2。インストールは簡単で、ルートユーザーのパスワードを構成する必要があります。 3.挿入、更新、削除、および選択してデータ操作を実行します。 4. Orderby、Where and Joinは複雑なクエリに使用できます。 5.デバッグでは、構文をチェックし、説明を使用してクエリを分析する必要があります。 6.最適化の提案には、インデックスの使用、適切なデータ型の選択、優れたプログラミング習慣が含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境