部分インデックス – Oracle,MySQL,PostgreSQLの比較
Oracle ACE Proの渡部 です。
主要なRDBMS製品を比較します。
大枠を整理することが最大の目的です。細かい例外事項は適宜記載を割愛しています。
この記事の対象製品およびバージョンは以下のとおりですが、バージョン依存性は比較的少ないはずです。
Oracle 19c (19.22以降)
MySQL 8.0.37以降
PostgreSQL 16以降
諸所の事情により、2023年以前の記事とは異なり、一旦SQL Serverを記載対象外としました。
時間ができた時に随時追記予定です。
もし誤りを見つけた場合は、優しく教えていただけると嬉しいです。→ https://x.com/wrcsus4 or ryota.watabe at cosol dot jp
「主要RDBMS製品の比較」ページ一覧
概論
https://cosol.jp/techdb/2023/12/rdbms_compare_overview/
アーキテクチャ, スキーマ, データベース, メモリ
https://cosol.jp/techdb/2022/09/rdbms_architecture_comparison/
記憶域, トランザクションログ, 物理構造
https://cosol.jp/techdb/2022/09/rdbms_compare_storage/
インデックスの仕組みと物理構造
https://cosol.jp/techdb/2023/12/rdbms_compare_index_structure/
バックアップ, 災害対策構成, 論理レプリケーション
https://cosol.jp/techdb/2022/09/rdbms_compare_bk_dr_rep/
同時実行制御, トランザクション分離レベル
https://cosol.jp/techdb/2022/09/rdbms_compare_conc_cntl_transaction/
文字コード, 文字セット, 照合順序
https://cosol.jp/techdb/2022/09/rdbms_compare_charcode/
接続, ユーザー, コマンドラインクライアント
https://cosol.jp/techdb/2022/09/rdbms_compare_conn_user/
立場の表明
コーソル はデータベース関連製品の販売およびプロフェッショナルサービス提供を行っている営利企業 です。
https://cosol.jp にある全てのコンテンツは、情報提供に加えて、コーソルの認知度向上、コーソルの営利活動の促進を目的としています。
著者について
部分インデックス (PostgreSQL)
PostgreSQLには、特定の条件を満たす行のみを含む特殊なインデックスである、部分インデックスがあります。
部分インデックスには条件を満たす行のみが含まれます。上記例では、flg='N'を満たす行のみがインデックスに含まれます。
部分インデックスは、条件を満たさない行に対する検索がほとんど実行されない場合に使うべきです。部分インデックスに指定する条件には以下のようなケースが考えられます。
「処理済みである」ことを示す条件
「削除済みである」ことを示す条件
「検索がほとんど実行されないほど、非常古いデータである」ことを示す条件
条件を満たさない行に対する検索がほとんど実行されない場合に部分インデックスを使うと、以下のメリットが得られます。
インデックスサイズの削減(必要な記憶域の削減)
インデックスのメンテナンス負荷軽減(インデックスの再構築など)
インデックス フルスキャンに相当する処理を高速化
実行計画
部分インデックスには条件を満たす行のみが含まれるため、検索で部分インデックスが使われるのは、条件を満たす行に対する検索の場合のみです。
条件を満たさない行に対する検索の場合は、部分インデックスは使用されません。
以下の実行例は以下を示しています。
条件にflg='N'を含むSELECTについては、部分インデックスが使用されています。
条件にflg='Y'を含む(≒条件にflg='N'を含まない)SELECTについては、部分インデックスが使用されず、テーブルフルスキャンが実行されています。
db1=# EXPLAIN SELECT * FROM t1 WHERE flg='N' AND id=1;
QUERY PLAN
-----------------------------------------------------------------------
Index Scan using t1_id_idx on t1 (cost=0.14..8.16 rows=1 width=1014)
Index Cond: (id = 1)
(2 rows)
db1=# EXPLAIN SELECT * FROM t1 WHERE flg='Y' AND id=1;
QUERY PLAN
--------------------------------------------------------
Seq Scan on t1 (cost=0.00..790.00 rows=49 width=1014)
Filter: ((flg = 'Y'::bpchar) AND (id = 1))
(2 rows)
Oracle, MySQL
Oracle, MySQLに、PostgreSQLの部分インデックスに相当する機能はありません。
ただし、ファンクション索引を使うと同様の動作を実現できることが以下のブログで紹介されています。
また、Oracleにパーシャル索引という機能がありますが、これは全く別のものです。詳細は以下のURLを参照ください。
パーティション索引 – Oracle,MySQL,PostgreSQLの比較
各製品における様々な索引の対応状況
リレーショナルデータベースで索引(インデックス)というと、たいていBツリー索引(Bツリーインデックス)のことです。当然ながら、今回取り上げたRDBMS製品はBツリー索引に対応しています。
Bツリー索引については、以下の記事を参照してください。
主要RDBMS製品の比較 – インデックスの仕組みと物理構造
しかし、リレーショナルデータベースにはBツリー以外の索引も存在します。
各RDBMS製品の、Bツリー以外の索引の対応状況は以下のとおりです。
「主要RDBMS製品の比較」ページ一覧
概論
https://cosol.jp/techdb/2023/12/rdbms_compare_overview/
アーキテクチャ, スキーマ, データベース, メモリ
https://cosol.jp/techdb/2022/09/rdbms_architecture_comparison/
記憶域, トランザクションログ, 物理構造
https://cosol.jp/techdb/2022/09/rdbms_compare_storage/
インデックスの仕組みと物理構造
https://cosol.jp/techdb/2023/12/rdbms_compare_index_structure/
バックアップ, 災害対策構成, 論理レプリケーション
https://cosol.jp/techdb/2022/09/rdbms_compare_bk_dr_rep/
同時実行制御, トランザクション分離レベル
https://cosol.jp/techdb/2022/09/rdbms_compare_conc_cntl_transaction/
文字コード, 文字セット, 照合順序
https://cosol.jp/techdb/2022/09/rdbms_compare_charcode/
接続, ユーザー, コマンドラインクライアント
https://cosol.jp/techdb/2022/09/rdbms_compare_conn_user/
[PR] オンプレミス&クラウドのマルチDB製品に対応した性能管理ツールDPA
Database Performance Analyzer (DPA) は、オンプレミス&クラウドに対応するデータベース性能監視/分析ツールです。
この記事で取り上げたRDBMS製品を含む、非常に多くのデータベース製品/サービスに対応しています。
Oracle Database
MS SQL Server
Sybase SAP ASE
IBM Db2
MySQL / MariaDB / Percona Server for MySQL
PostgreSQL / Enterprise DB
AWS
Amazon RDS for Oracle Database / SQL Server / MySQL / MariaDB / PostgreSQL
Amazon Aurora for MySQL / PostgreSQL
Azure
Azure SQL Database
Azure SQL Managed Instance
Azure SQL for PostgreSQL
Azure Database for MySQL / MariaDB
Google Cloud
Google Cloud SQL for MySQL / PostgreSQL / SQL Server
以下の特徴があり、導入しやすく有用な製品です。
なぜコーソルからDatabase Performance Analyzer (DPA)を購入すべきなのか
コーソルはDatabase Performance Analyzer (DPA) の一次代理店で、Database Performance Analyzer (DPA)の製品販売を行います。 SIer様、販社様がDatabase Performance Analyzer (DPA)を販売および導入することも可能です。
コーソルはデータベースの技術力を強みとしています。なかでもOracle Database技術力は日本随一です。MySQL、PostgreSQL、MS SQL Serverの資格や実績を持つエンジニアも多数在籍しております。
独自のDPAナレッジを公開
DPAの導入や監視設定に関する手順をナレッジとして公開しています。評価版をご利用される際の参考にしていただけると幸いです。
多数のOracle関連書籍を執筆
オラクルマスター教科書 Gold DBA Oracle Database Administration II : 渡部 亮太 , 舛井 智行, 峯岸 隆一
https://www.amazon.co.jp/dp/479817436X/ (2022年5月27日 発売)
オラクルマスター教科書 Silver SQL Oracle Database SQL : 渡部 亮太 , 舛井 智行, 峯岸 隆一
https://www.amazon.co.jp/dp/4798172367/ (2021年9月13日 発売)
オラクルマスター教科書 Silver DBA Oracle Database Administration I : 渡部 亮太 , 舛井 智行 , 杉本 篤信 , 西田 幸平
https://www.amazon.co.jp/dp/4798166359/ (2021年5月28日 発売)
オラクルマスター教科書 Bronze DBA Oracle Database Fundamentals : 渡部 亮太 , 岡野 平八郎 , 鈴木 俊也
https://www.amazon.co.jp/dp/4798166367/ (2020年9月17日 発売)
オラクルマスター教科書 Gold Oracle Database 12c : 渡部 亮太 , 岡野 平八郎
https://www.amazon.co.jp/dp/4798147958/ (2018年8月8日 発売)
Oracleの基本 ~ データベース入門から設計/運用の初歩まで : 渡部 亮太 , 相川 潔 , 日比野 峻佑 , 岡野 平八郎 , 宮川 大地
https://www.amazon.co.jp/dp/4774192511/ (2017年9月22日 発売)
プロとしてのOracleアーキテクチャ入門【第2版】 : 渡部 亮太
http://www.amazon.co.jp/dp/4797384085/ (2015年4月25日 発売)
プロとしてのOracle運用管理入門 : 渡部 亮太
http://www.amazon.co.jp/dp/4797355123/ (2009年9月25日 発売)
プロとしてのOracleアーキテクチャ入門 : 渡部 亮太 , 森坂 康人
http://www.amazon.co.jp/dp/4797349808/ (2008年8月22日 発売)
プロとしてのOracle入門 : 松下 雅, 舛井 智行, 古賀 加奈
http://www.amazon.co.jp/dp/4797349433/ (2008年10月29日 発売)
Oracle Database 10g Oracle Enterprise Manager 逆引きクイックリファレンス : 舛井 智行, 青木 武士, 松下 雅
http://www.amazon.co.jp/dp/4797349433/ (2007年11月27日 発売)
ORACLE MASTER Platinum取得者数 No.1
単年度ORACLE MASTER Platinum取得者数7年連続No.1
7年連続ORACLE MASTER Platinum取得者数No.1! Oracle Certification Award 2020
累計ORACLE MASTER Platinum取得者数も、2016年以降No.1を維持
[PR] コーソルのデータベース運用関連製品とサービス
コーソルでは、データベース運用を製品とサービスでご支援します。
Database Performance Analyzer (DPA)
Database Performance Analyzer (DPA)は、オンプレミスとクラウド上の多くのデータベース製品に対応したデータベース性能管理製品です。低価格であるため、非常に導入しやすいです。
自動SQLチューニング機能を持つToad
Database Performance Analyzer (DPA)で検出された問題SQLをチューニングする際に、Toad for Oracle / Toad for SQL Serverの SQL Optimizer機能を使用できます。
リモートDBAサービス
リモートDBAサービスはDB・運用の専門家がお客様のデータベースに対して
必要な時に必要な対応を行うリモート接続型運用保守サービスです。
データベース運用・保守なら常駐しないリモートDBA
時間制コンサルティングサービス
時間制コンサルティングサービスは”必要な時に” ”必要な時間だけ”契約できる
時間契約型のコンサルティングサービスです。
データベース コンサルティングなら時間制コンサルティング
前の記事へ 索引構成表 / クラスタ化イン...
次の記事へ #dbts2024 「SQL実...