パフォーマンス&チューニング・ガイド
Sybase® IQ
12.7
ドキュメント ID : DC00283-01-1270-01
改訂: 2006 年 6 月
Copyright © 1991-2006 by Sybase, Inc. All rights reserved.
このマニュアルは Sybase ソフトウェアの付属マニュアルであり、新しいマニュアルまたはテクニカル・ノートで特に示さ
れないかぎりは、後続のリリースにも付属します。このマニュアルの内容は、予告なく変更されることがありますが、
Sybase, Inc. およびその関連会社では内容の変更に関して一切の責任を負いません。このマニュアルに記載されているソフ
トウェアはライセンス契約に基づいて提供されるものであり、無断で使用することはできません。
マニュアルの注文
マニュアルの注文を承ります。ご希望の方は、サイベース株式会社営業部または代理店までご連絡ください。マニュアル
の変更は、弊社の定期的なソフトウェア・リリース時にのみ提供されます。このマニュアルの内容を弊社の書面による事
前許可を得ずに電子的、機械的、手作業、光学的、またはその他のいかなる手段によっても複製、転載、翻訳することを
禁じます。
Sybase、 SYBASE ( ロゴ )、 ADA Workbench、 Adaptable Windowing Environment、 Adaptive Component Architecture、 Adaptive Server、 Adaptive
Server Anywhere、 Adaptive Server Enterprise、 Adaptive Server Enterprise Monitor、 Adaptive Server Enterprise Replication、 Adaptive Server
Everywhere、 Advantage Database Server、 Afaria、 Answers Anywhere、 Applied Meta、 Applied Metacomputing、 AppModeler、 APT Workbench、
APT-Build、 APT-Edit、 APT-Execute、 APT-Translator、 APT-Library、 ASEP、 Avak i、 Avaki (Arrow Design)、 Avaki Data Grid、 Avan tG o、 Backup
Server、 BayCam、 Beyond Connected、 Bit-Wise、 BizTracker、 Certified PowerBuilder Developer、Certified SYBASE Professional、 Certified SYBASE
Professional Logo、ClearConnect、Client-Library、 Client Services、 CodeBank、 Column Design、 ComponentPack、 Connection Manager、 Convoy/
DM、 Copernicus、 CSP、 Data Pipeline、 Data Workbench、 DataArchitect、 Database Analyzer、 DataExpress、 DataServer、 DataWindow、
DataWindow .NET、DB-Library、dbQueue、Dejima、Dejima Direct、 Developers Workbench、 DirectConnect Anywhere、DirectConnect、Distribution
Director、 Dynamic Mobility Model、 e-ADK、 E-Anywhere、 e-Biz Integrator、 E-Whatever、 EC Gateway、 ECMAP、 ECRTP、 eFulfillment
Accelerator、 EII Plus、 Electronic Case Management、 Embedded SQL、EMS、 Enterprise Application Studio、 Enterprise Client/Server、 Enterprise
Connect、 Enterprise Data Studio、 Enterprise Manager、 Enterprise Portal ( ロゴ )、 Enterprise SQL Server Manager、 Enterprise Work Architecture、
Enterprise Work Designer、 Enterprise Work Modeler、 eProcurement Accelerator、eremote、Everything Works Better When Everything Works Together、
EWA、 ExtendedAssist、 Extended Systems、 ExtendedView、 Financial Fusion、 Financial Fusion ( および設計 )、 Financial Fusion Server、 Formula
One、 Fusion Powered e-Finance、 Fusion Powered Financial Destinations、 Fusion Powered STP、 Gateway Manager、 GeoPoint、 GlobalFIX、
iAnywhere、 iAnywhere Solutions、 ImpactNow、 Industry Warehouse Studio、 InfoMaker、 Information Anywhere、 Information Everywhere、
InformationConnect、 InstaHelp、 Intelligent Self-Care、 InternetBuilder、 iremote、 irLite、 iScript、 Jaguar CTS、 jConnect for JDBC、 KnowledgeBase、
Legion、 Logical Memory Manager、 M2M Anywhere、 Mach Desktop、 Mail Anywhere Studio、 Mainframe Connect、 Maintenance Express、 Manage
Anywhere Studio、MAP、 M-Business Anywhere、M-Business Channel、 M-Business Network、 M-Business Suite、MDI Access Server、 MDI Database
Gateway、 media.splash、 Message Anywhere Server、 MetaWorks、 MethodSet、 mFolio、 Mirror Activator、 ML Query、 MobiCATS、 MobileQ、
MySupport、 Net-Gateway、 Net-Library、 New Era of Networks、 Next Generation Learning、 Next Generation Learning Studio、 O DEVICE、 OASiS、
OASiS logo、ObjectConnect、ObjectCycle、OmniConnect、OmniQ、 OmniSQL Access Module、 OmniSQL Toolkit、OneBridge、 Open Biz、Open
Business Interchange、 Open Client、 Open ClientConnect、 Open Client/Server、 Open Client/Server Interfaces、 Open Gateway、 Open Server、 Open
ServerConnect、Open Solutions、 Optima++、 Partnerships that Work、 PB-Gen、PC APT Execute、PC DB-Net、PC Net Library、Pharma Anywhere、
PhysicalArchitect、 Pocket PowerBuilder、 PocketBuilder、 Power++、 Power Through Knowledge、 power.stop、 PowerAMC、 PowerBuilder、
PowerBuilder Foundation Class Library、PowerDesigner、PowerDimensions、PowerDynamo、 Powering the New Economy、PowerScript、PowerSite、
PowerSocket、 Powersoft、 PowerStage、 PowerStudio、 PowerTips、 Powersoft Portfolio、 Powersoft Professional、 PowerWare Desktop、PowerWare
Enterprise、 ProcessAnalyst、 Pylon、 Pylon Anywhere、 Pylon Application Server、 Pylon Conduit、 Pylon PIM Server、 Pylon Pro、 QAnywhere、
Rapport、 Relational Beans、 RemoteWare、 RepConnector、 Report Workbench、 Report-Execute、Replication Agent、 Replication Driver、 Replication
Server、 Replication Server Manager、 Replication Toolkit、 Resource Manager、 RFID Anywhere、 RW-DisplayLib、 RW-Library、 SAFE、 SAFE/PRO、
Sales Anywhere、 Search Anywhere、SDF、 Search Anywhere、 Secure SQL Server、 Secure SQL Toolset、 Security Guardian、ShareSpool、ShareLink、
SKILS、 smart.partners、 smart.parts、smart.script、 SOA Anywhere Trademark,SQL Advantage、 SQL Anywhere、 SQL Anywhere Studio、 SQL Code
Checker、 SQL Debug、 SQL Edit、 SQL Edit/TPU、 SQL Everywhere、 SQL Modeler、 SQL Remote、 SQL Server、 SQL Server Manager、 SQL
SMART、 SQL Toolset、SQL Server/CFT、SQL Server/DBM、SQL Server SNMP SubAgent、SQL Station、SQLJ、Stage III Engineering、
Startup.Com、 STEP、 SupportNow、 S.W.I.F.T. Message Format Libraries、 Sybase Central、 Sybase Client/Server Interfaces、 Sybase Development
Framework、 Sybase Financial Server、 Sybase Gateways、 Sybase IQ、 Sybase Learning Connection、 Sybase MPP、 Sybase SQL Desktop、Sybase SQL
Lifecycle、 Sybase SQL Workgroup、 Sybase Synergy Program、 Sybase Virtual Server Architecture、 Sybase User Workbench、SybaseWare、 Syber
Financial、SyberAssist、 SybFlex、 SybMD、 SyBooks、 System 10、 System 11、 System XI ( ロゴ )、 SystemTools、 Tabular Data Stream、The
Enterprise Client/Server Company、The Extensible Software Platform、The Future Is Wide Open、The Learning Connection、The Model For Client/Server
Solutions、 The Online Information Center、 The Power of One、 TotalFix、 Trade Force 、 Transa ct-SQ L、 Translation Toolkit、Turning Imagination Into
Reality、 UltraLite、 UltraLite.NET、 UNIBOM、 Unilib、 Uninull、 Unisep、 Unistring、 URK Runtime Kit for UniCode、 Viafone、 Viewer、
VisualWriter、 VQL、 WarehouseArchitect、Warehouse Control Center、 Warehouse Studio、 Warehouse WORKS、Wat com 、 Watcom SQL、Watcom
SQL Server、 Web Deployment Kit、Web.PB、 Web.SQL、 WebSights、 WebViewer、 WorkGroup SQL Server、 XA-Library、 XA-Server、 XcelleNet、
XP Server、XTNDAccess、および XTNDConnect は、米国法人 Sybase, Inc. およびその子会社の商標です。
Unicode と Unicode のロゴは、 Unicode, Inc. の登録商標です。
このマニュアルに記載されている上記以外の社名および製品名は、各社の商標または登録商標の場合があります。
Use, duplication, or disclosure by the government is subject to the restrictions set forth in subparagraph (c)(1)(ii) of DFARS 52.227-7013
for the DOD and as set forth in FAR 52.227-19(a)-(d) for civilian agencies.
Sybase, Inc., One Sybase Drive, Dublin, CA 94568.
目次
はじめに .................................................................................................................................................. ix
第 1 章 データベース・テーブルからのデータの選択 ........................................ 1
前提条件 ................................................................................................. 2
テーブル情報の表示 ............................................................................... 3
クエリ結果の順序付け ........................................................................... 5
カラムとローの選択 ............................................................................... 6
探索条件の使用 ...................................................................................... 7
クエリでの日付の比較 .................................................................... 8
WHERE 句での複合探索条件 ......................................................... 8
探索条件でのパターン・マッチング............................................... 9
発音によるローのマッチング ....................................................... 10
探索条件を入力するためのショートカット.................................. 10
集約データの取得................................................................................. 11
集合関数の概要 ............................................................................. 11
集合関数によるグループ化されたデータの取得........................... 12
グループの制限 ............................................................................. 12
小計計算の活用 ............................................................................. 13
分析データの取得................................................................................. 17
重複したローの削除 ............................................................................. 18
第 2 章 テーブルのジョイン.............................................................................. 19
外積を使用したテーブルのジョイン.................................................... 19
ジョインの制限 .................................................................................... 20
テーブル間の関係................................................................................. 21
プライマリ・キーによるローの識別............................................. 21
外部キーによって関連付けられたテーブル.................................. 22
ジョイン演算子 .................................................................................... 22
キー・ジョインを使用したテーブルのジョイン........................... 22
ナチュラル・ジョインを使用したテーブルのジョイン................ 24
アドホック・ジョインとジョイン・インデックスの使用 ................... 25
ジョインとデータ型 ............................................................................. 25
ストアまたはデータベース間ジョインのサポート .............................. 26
リモート・データベースと異種データベースのクエリ ....................... 27
サブクエリによるジョインの置き換え ................................................ 28
パフォーマンス&チューニング・ガイド iii
目次
第 3 章 クエリと削除の最適化 .......................................................................... 31
クエリ構築のヒント ............................................................................. 31
UNION ALL での GROUP BY がクエリ・パフォーマンスに
与える影響 ............................................................................. 32
Adaptive Server Anywhere による処理を引き起こす条件 ............ 34
クエリ・プラン.................................................................................... 35
クエリ評価オプション.................................................................. 35
クエリ・ツリー............................................................................. 37
HTML クエリ・プランの使用 ....................................................... 37
クエリ処理の制御 ................................................................................ 37
クエリの時間制限の設定 .............................................................. 37
クエリの優先度の設定.................................................................. 38
クエリ最適化オプションの設定 ................................................... 38
述部ヒントの設定 ......................................................................... 39
削除オペレーションの最適化 .............................................................. 40
削除コスト.................................................................................... 41
削除パフォーマンス・オプションの使用 ..................................... 41
第 4 章 OLAP の使用......................................................................................... 43
OLAP について .................................................................................... 44
OLAP の利点 ................................................................................. 45
OLAP の評価について .................................................................. 45
GROUP BY 句の拡張機能 .................................................................... 47
GROUP BY での ROLLUP と CUBE............................................ 48
統計関数............................................................................................... 61
単純な集合関数............................................................................. 61
ウィンドウ.................................................................................... 62
数値関数........................................................................................ 85
OLAP の規則と制限............................................................................. 88
その他の OLAP の例 ............................................................................ 89
例: クエリ内でのウィンドウ関数................................................ 89
例: 複数の関数で使用されるウィンドウ..................................... 91
例: 累積和の計算......................................................................... 92
例: 移動平均の計算 ..................................................................... 92
例: ORDER BY の結果................................................................ 93
例: 1 つのクエリ内で複数の集合関数を使用 .............................. 94
例: ウィンドウ・フレーム指定の ROWS と RANGE の比較 ..... 94
例: 現在のローを除外するウィンドウ・フレーム....................... 95
例: ROW のデフォルトのウィンドウ・フレーム........................ 96
例: UNBOUNDED PRECEDING と
UNBOUNDED FOLLOWING ................................................. 96
例: RANGE のデフォルトのウィンドウ・フレーム .................... 97
OLAP 関数の BNF 文法 ....................................................................... 98
iv Sybase IQ
目次
第 5 章 システム・リソースの管理 ................................................................. 103
パフォーマンス用語の概要................................................................. 104
パフォーマンス向上のための設計...................................................... 104
メモリ使用の概要 ............................................................................... 105
ページングによる使用可能メモリの増加.................................... 105
スワッピングをモニタするためのユーティリティ ..................... 106
サーバ・メモリ ........................................................................... 106
バッファ・キャッシュの管理...................................................... 107
バッファ・キャッシュ・サイズの決定 ....................................... 107
バッファ・キャッシュ・サイズの設定 ....................................... 113
ページ・サイズの指定................................................................. 115
メモリの節約 ............................................................................... 116
ユーザが多数存在する場合の最適化........................................... 117
プラットフォーム固有のメモリ・オプション ............................ 119
メモリを増やすその他の方法...................................................... 122
プロセス・スレッド・モデル ............................................................. 123
スレッド不足エラー .................................................................... 124
スレッド使用を管理するための Sybase IQ オプション ............. 124
I/O の分散 ........................................................................................... 125
ロー I/O (UNIX オペレーティング・システム ) ........................... 125
ディスク・ストライピングの使用............................................... 125
内部ストライピング .................................................................... 127
複数の dbspace の使用 ............................................................... 128
戦略的なファイルの格納 ............................................................. 129
挿入、削除、同期のための作業領域........................................... 133
予約領域のオプションの設定...................................................... 133
リソース使用を調整するオプション .................................................. 133
同時クエリの制限........................................................................ 134
使用可能な CPU 数の設定........................................................... 134
クエリによるテンポラリ dbspace の使用の制限........................ 134
返されるローによるクエリの制限............................................... 135
カーソルのスクロールの禁止...................................................... 135
カーソル数の制限........................................................................ 135
文の数の制限 ............................................................................... 135
キャッシュ・ページのプリフェッチ........................................... 136
一般的な使用のための最適化...................................................... 136
プリフェッチされるローの数の制御........................................... 136
リソースを効率的に利用するための他の方法.................................... 137
マルチプレックス・データベースのディスク領域の管理 .......... 137
クエリ・サーバ間のロード・バランス ....................................... 137
データベース・アクセスの制限 .................................................. 137
ディスクのキャッシュ................................................................. 138
インデックスのヒント........................................................................ 138
正しいインデックス・タイプの選択........................................... 138
ジョイン・インデックスの使用 .................................................. 139
削除のための十分なディスク領域の確保.................................... 139
パフォーマンス&チューニング・ガイド v
目次
データベース・サイズと構造の管理 ................................................. 140
データベース・サイズの管理 ..................................................... 140
インデックスの断片化の制御 ..................................................... 140
カタログ・ファイル増大の最小化.............................................. 141
パフォーマンス向上のための非正規化....................................... 141
非正規化のリスク ....................................................................... 141
非正規化の短所........................................................................... 142
非正規化のパフォーマンスの利点.............................................. 142
非正規化の決定........................................................................... 142
ロードを高速化するための UNION ALL ビューの使用 ..................... 143
UNION ALL ビューを参照するクエリの最適化.......................... 143
ネットワーク・パフォーマンス......................................................... 145
大量のデータ転送の向上 ............................................................ 145
ヘビー・ネットワーク・ユーザの分離....................................... 145
少量のデータを小さなパケットに入れる ................................... 146
大量のデータを大きなパケットに入れる ................................... 146
サーバ・レベルのプロセス......................................................... 146
第 6 章 パフォーマンスのモニタリングとチューニング................................. 147
Sybase IQ 環境の表示 ....................................................................... 147
ストアド・プロシージャを使用して情報を取得する ................. 148
Sybase Central パフォーマンス・モニタの使用........................ 148
データベース・プロシージャのプロファイリング..................... 149
バッファ・キャッシュのモニタリング.............................................. 157
バッファ・キャッシュ・モニタの起動....................................... 157
モニタ実行中の結果の確認......................................................... 163
バッファ・キャッシュ・モニタの停止....................................... 164
モニタリング結果の検査と保存 ................................................. 164
モニタリング結果の例................................................................ 165
バッファ・キャッシュの構造 ............................................................ 169
バッファ・マネージャのスラッシングの回避 ................................... 169
Windows システムでのページングのモニタリング ................... 171
UNIX システムでのページングのモニタリング ......................... 171
バッファ・キャッシュ・モニタリング・チェックリスト ................. 173
CPU 使用率をモニタリングするシステム・ユーティリティ ............ 176
第 7 章 Windows システムでのサーバのチューニング .................................. 177
パフォーマンスについての一般的なガイドライン............................ 177
スループットの最大化................................................................ 177
メモリの割り付け超過の防止 ..................................................... 178
物理メモリのモニタリング......................................................... 178
ファイル・システム ................................................................... 178
パフォーマンスのモニタリング......................................................... 179
仮想アドレス空間とワーキング・セットのモニタリング.......... 179
ページ・フォールトのモニタリング .......................................... 180
vi Sybase IQ
目次
NTFS キャッシュの使用..................................................................... 180
挿入とクエリのチューニング ............................................................. 181
適切にチューニングされた挿入オペレーションの特性 .............. 181
クエリのチューニング................................................................. 182
バックアップ操作のチューニング...................................................... 182
索引....................................................................................................................................................... 185
パフォーマンス&チューニング・ガイド vii
目次
viii Sybase IQ
はじめに
このマニュアルの内容
対象読者
このマニュアルの使用方法
関連マニュアル
このマニュアルでは、パフォーマンスとチューニングの推奨事項について
説明します。
このマニュアルは、パフォーマンス上の問題を理解する必要があるシステ
ム管理者とデータベース管理者を対象としています。リレーショナル・
データベース・システムの基礎知識と、Sybase IQ のユーザ・レベルの基
本的な経験があることを前提にしています。このマニュアルは、他のマ
ニュアルとともに使用してください。
次のリストは、行う作業や必要性に応じてどの章を参照すべきかを示し
ます。
• SELECT 文の構築については、「第 1 章 データベース・テーブルから
のデータの選択」を参照してください。
• ジョイン条件については、「第 2 章 テーブルのジョイン」 を参照して
ください。
• クエリの最適化については、「第 3 章 クエリと削除の最適化」 を参照
してください。
• メモリ、ディスク I/O 、CPU の調整については、「第 5 章 システム・
リソースの管理」を参照してください。
• パフォーマンスについては、「第 6 章 パフォーマンスのモニタリング
とチューニング」を参照してください。
• Windows パフォーマンスについては、「第 7 章 Windows システムでの
サーバのチューニング」を参照してください。
Sybase IQ には次のマニュアルが用意されています。
• 『 Sybase IQ の概要』 - Sybase IQ と Sybase Central™ データベース管理
ツールに慣れていないユーザのための説明と練習が記載されています。
• 『Sybase IQ 12.7 の新機能』 - Sybase IQ の新機能の概略を説明してい
ます。
• 『Sybase IQ パフォーマンス&チューニング・ガイド』 - 巨大なデータ
ベースのクエリ最適化、設計、チューニングについて説明しています。
• 『Sybase IQ システム管理ガイド』 - Sybase IQ がサポートする、管理
面の概念と手順および最適なパフォーマンスのチューニングについ
て説明しています。IQ ストアの管理方法についても説明しています。
パフォーマンス&チューニング・ガイド ix
• 『Sybase IQ トラブルシューティングおよびリカバリ・ガイド』 - 問題の解
決方法、システム・リカバリの実行方法、データベースの修復方法を紹介
しています。
• 『 Sybase IQ エラー・メッセージ』 - Sybase IQ エラー・メッセージ (SQLCode、
SQLState、Sybase エラー・コードによって参照 )、お よ び SQL プリプロセッ
サのエラーと警告を示します。
• 『Sybase IQ ユーティリティ・ガイド』 - Sybase IQ ユーティリティ・プロ
グラムのリファレンス項目 ( 使用可能な構文、パラメータ、オプションな
ど ) について説明しています。
• 『Sybase IQ によるラージ・オブジェクト管理』 - Sybase IQ データ・リポ
ジトリ内での BLOB (Binary Large Object) および CLOB (Character Large
Object) の格納と取得について説明しています。このオプションの製品を
インストールするには、別のライセンスが必要です。
• 『 Sybase IQ インストールおよび設定ガイド』 - プラットフォーム固有の
Sybase IQ のインストール手順、新バージョンの Sybase IQ へのマイグレー
ト、特定のプラットフォームでの Sybase IQ の設定について説明してい
ます。
• 『Sybase IQ リリース・ノート』 - 製品およびマニュアルに加えられた最新
の変更内容について説明しています。
• 『Sybase IQ の暗号化カラム』 - Sybase IQ データ・リポジトリ内でのユー
ザによるカラムの暗号化の使用について説明しています。このオプション
の製品をインストールするには、別のライセンスが必要です。
Sybase IQ と Adaptive Server Anywhere
Sybase IQ は、SQL Anywhere® Studio のコンポーネントである Adaptive Server®
Anywhere を拡張した製品のため、 Adaptive Server Anywhere と同じ機能を数多
くサポートしています。 Sybase IQ のマニュアル・セットは、 SQL Anywhere
Studio のマニュアルの該当する箇所を参照しています。
Adaptive Server Anywhere には、次のマニュアルがあります。
• 『 Adaptive Server Anywhere プログラミング・ガイド』 - ODBC、 Embedded
SQL™、または Open Client™ インタフェースに直接アクセスするプログ
ラムを開発するアプリケーション開発者を対象にしています。このマニュ
アルでは、Adaptive Server Anywhere アプリケーションの開発方法につい
て説明しています。
• 『Adaptive Server Anywhere データベース管理ガイド』 - すべてのユーザを
対象に、データベースとデータベース・サーバの運用、管理、設定につい
て説明しています。
x Sybase IQ
その他の情報ソース
はじめに
• 『 Adaptive Server Anywhere SQL リファレンス・マニュアル』 - Adaptive
Server Anywhere で使用する SQL 言語のリファレンスです。さらに、
Adaptive Server Anywhere のシステム・テーブルとプロシージャについて
も説明します。
Sybase Product Manuals Web サイトでも、SQL Anywhere Studio 9.0.2 コレクショ
ンの Adaptive Server Anywhere マニュアルを参照できます。Product Manuals
(http://www.sybase.com/support/manuals/ ) にアクセスしてください。
Sybase Getting Started CD、Sybase CD、 Sybase Product Manuals Web サイトを利
用すると、製品について詳しく知ることができます。
• Getting Started CD には、PDF 形式のリリース・ノートとインストール・ガイ
ド、および SyBooks CD に含まれていないその他のマニュアルや更新情報が
収録されています。この CD は製品のソフトウェアに同梱されています。
Getting Started CD に収録されているマニュアルを参照または印刷するには、
Adobe Acrobat Reader が必要です (CD 内のリンクを使用して Adobe の Web サ
イトから無料でダウンロードできます )。
• SyBooks CD には製品マニュアルが収録されています。この CD は製品の
ソフトウェアに同梱されています。Eclipse ベースの SyBooks ブラウザで
は、使いやすい HTML 形式のマニュアルにアクセスできます。
一部のマニュアルは PDF 形式で提供されています。それらのマニュアル
は SyBooks CD の PDF ディレクトリに収録されています。PDF ファイル
を開いたり印刷したりするには、Adobe Acrobat Reader が必要です。
SyBooks をインストールして起動するまでの手順については、 Getting Started
CD の『 SyBooks Installation Guide』または SyBooks CD の README.txt ファイ
ルを参照してください。
• Sybase Product Manuals Web サイトは、SyBooks CD のオンライン版であり、
標準の Web ブラウザを使ってアクセスできます。また、製品マニュアル
のほか、EBFs/Maintenance、Technical Documents、Case Management、Solved
Cases 、ニュース・グループ、Sybase Developer Network へのリンクもあり
ます。
Sybase Product Manuals Web サイトにアクセスするには、Product Manuals
(http://www.sybase.com/support/manuals/ ) にアクセスしてください。
•I n f o c e n t e r はオンライン・バージョンの SyBooks であり、標準の Web ブラ
ウザで表示できます。Infocenter Web サイトにアクセスするには、Sybooks
Online Help (http://infocenter.sybase.com/help/index.jsp) にアクセスして
ください。
パフォーマンス&チューニング・ガイド xi
Web 上の Sybase 製品
の動作確認情報
Sybase Web サイトの技術的な資料は頻繁に更新されます。
❖ 製品動作確認の最新情報にアクセスする
1W e b ブラウザで Technical Documents を指定します。
(http://www.sybase.com/support/techdocs/ )
2 [Certification Report] をクリックします。
3 [Certification Report] フィルタで製品、プラットフォーム、時間枠を指定し
て [Go] をクリックします。
4 [Certification Report] のタイトルをクリックして、レポートを表示します。
❖ コンポーネント動作確認の最新情報にアクセスする
1W e b ブラウザで Availability and Certification Reports を指定します。
(http://certification.sybase.com/ )
2 [Search By Base Product] で製品ファミリとベース製品を選択するか、
[Search by Platform] でプラットフォームとベース製品を選択します。
3[ S e a r c h ] をクリックして、入手状況と動作確認レポートを表示します。
❖ Sybase Web サイト ( サポート・ページを含む ) の自分専用のビューを作成する
MySybase プロファイルを設定します。MySybase は無料サービスです。この
サービスを使用すると、Sybase Web ページの表示方法を自分専用にカスタマ
イズできます。
1W e b ブラウザで Technical Documents を指定します。
(http://www.sybase.com/support/techdocs/ )
2 [MySybase] をクリックし、 MySybase プロファイルを作成します。
Sybase EBF とソフト
ウェア・メンテナンス
❖ EBF とソフトウェア・メンテナンスの最新情報にアクセスする
1W e b ブラウザで Sybase Support Page (http://www.sybase.com/support )
を指定します。
2 [EBFs/Maintenance] を選択します。ユーザ名とパスワードの入力が求めら
れたら、MySybase のユーザ名とパスワードを入力します。
3 製品を選択します。
xii Sybase IQ
SQL 構文の表記規則
はじめに
4 時間枠を指定して [Go] をクリックします。EBF/Maintenance リリースのリ
ストが表示されます。
鍵のアイコンは、自分が Technical Support Contact として登録されていな
いため、一部の EBF/Maintenance リリースをダウンロードする権限がない
ことを示しています。未登録ではあるが、Sybase 担当者またはサポート・
コンタクトから有効な情報を得ている場合は、[Edit Roles] をクリックし
て、「Technical Support Contact」役割を MySybase プロファイルに追加します。
5 EBF/Maintenance レポートを表示するには [Info] アイコンをクリックします。
ソフトウェアをダウンロードするには製品の説明をクリックします。
このマニュアルで、構文の説明に使用する表記規則は次のとおりです。
• キーワード SQL キーワードは大文字で示します。ただし、SQL キーワー
ドは大文字と小文字を区別しないので、入力するときはどちらで入力して
もかまいません。たとえば、SELECT は Select でも select でも同じです。
• プレースホルダ 適切な識別子または式で置き換えられる項目は、斜体で表
記します。
• 継続 省略記号 (…) で始まる行は、前の行から文が続いていることを表し
ます。
• 繰り返し項目 繰り返し項目のリストは、リストの要素の後ろに省略記号 ( ピ
リオド 3 つ ...) を付けて表します。複数の要素を指定できます。複数の要素
を指定する場合は、各要素間はカンマで区切る必要があります。
• オプション指定部分 文のオプション指定部分は、角カッコで囲みます。例:
RELEASE SAVEPOINT [ savepoint-name ]
この例では、savepoint-name がオプション部分です。角カッコは入力しな
いでください。
• オプション 項目リストから 1 つだけ選択しなければならない場合、また
何も選択する必要のない場合は、項目間を縦線で区切り、リスト全体を角
カッコで囲みます。例:
[ ASC | DESC ]
この例では、ASC 、DESC のどちらか 1 つを選択しても、何も選択しなく
てもかまいません。角カッコは入力しないでください。
• 選択肢 オプションの中の 1 つを必ず選択しなければならない場合は、選
択肢を大カッコ { } で囲みます。例:
QUOTES { ON | OFF }
この例では、ON 、OFF のどちらかを必ず入力しなければなりません。大
カッコ自体は入力しないでください。
パフォーマンス&チューニング・ガイド xiii
書体の表記規則
サンプル・データベース
アクセシビリティ機能
表 1 に、このマニュアルで使用している書体の表記規則を示します。
表 1: 書体の表記規則
項目 説明
Code
User entry
「強調」 強調する言葉は「 」で囲みます。
file names
database objects
SQL およびプログラム・コードは等幅 ( 固定幅 ) 文字フォントで
表記します。
ユーザが入力するテキストには等幅 ( 固定幅 ) 文字フォントを使
用します。
ファイル名は斜体で表記します。
テーブル、プロシージャなどのデータベース・オブジェクトの名
前は、印刷物ではゴシック体 フォントで、オンラインでは斜体で
表記します。
Sybase IQ にはサンプル・データベースが用意されています。Sybase IQ マニュ
アルで紹介している例の多くは、このサンプル・データベースによるものです。
サンプル・データベースは小規模企業の例を示しています。データベースに
は、この企業の内部情報 (employee 、department) とともに、製品情報 (product) 、
販売情報 (sles_order 、customer 、contact) 、財務情報 (fin_code 、fin_data) が入っ
ています。
サンプル・データベース ( ファイル名 asiqdemo.db ) は、UNIX システムでは
$ASDIR/demo ディレクトリに、Windows システムでは %ASDIR%¥demo ディ
レクトリにあります。
このマニュアルには、アクセシビリティを重視した HTML 版もあります。こ
の HTML 版マニュアルは、スクリーン・リーダーで読み上げる、または画面
を拡大表示するなどの方法により、その内容を理解できるよう配慮されてい
ます。
Sybase IQ 12.7 と HTML マニュアルは、連邦リハビリテーション法第 508 条の
アクセシビリティ規定に準拠していることがテストにより確認されています。
第 508 条に準拠しているマニュアルは通常、World Wide Web Consortium (W3C)
の Web サイト用ガイドラインなど、米国以外のアクセシビリティ・ガイドラ
インにも準拠しています。
Sybase Central 用 Sybase IQ プラグインのアクセシビリティへの対応について
は、『Sybase IQ の概要』の「アクセシビリティ機能の使用」を参照してくださ
い。この製品のオンライン・ヘルプは、スクリーン・リーダーの読み上げで内
容を理解でき、Sybase Central のキーボード・ショートカットなどのアクセシ
ビリティ機能についての説明もあります。
xiv Sybase IQ
不明な点があるときは
はじめに
アクセシビリティ・ツールの設定
アクセシビリティ・ツールを効率的に使用するには、設定が必要な場合もありま
す。一部のスクリーン・リーダーは、テキストの大文字と小文字を区別して発音
します。たとえば、すべて大文字のテキスト (ALL UPPERCASE TEXT など ) はイ
ニシャルで発音し、大文字と小文字の混在したテキスト (MixedCase Text など ) は
単語として発音します。構文規則を発音するようにツールを設定すると便利かも
しれません。詳細については、ツールのマニュアルと『Sybase IQ の概要』の「ス
クリーン・リーダの使用」を参照してください。
Sybase のアクセシビリティに対する取り組みについては、Sybase Accessibility
(http://www.sybase.com/accessibility ) を参照してください。Sybase Accessibility
サイトには、第 508 条と W3C 標準に関する情報へのリンクもあります。
Sybase IQ の第 508 条準拠の声明については、Sybase Accessibility
(http://www.sybase.com/accessibility ) を参照してください。
サポート契約を購入済みの Sybase 製品のインストールには、定められた 1 人
以上のユーザに対して、Sybase 製品の保守契約を結んでいるサポート・センタ
を利用する権利が付属します。マニュアルだけでは解決できない問題があった
場合には、担当の方を通して Sybase のサポート・センタまでご連絡ください。
パフォーマンス&チューニング・ガイド xv
xvi Sybase IQ
第 1 章 データベース・テーブルからのデータの
選択
この章について
内容
この章では、基本的なクエリの構築と、製品設計を活用するための手法に
ついて説明します。ここではテーブルの内容の表示、クエリ結果の順序付
け、カラムとローの選択、探索条件を使ったクエリの絞り込みを行う
チュートリアル作業を実行します。
高度なクエリ・パフォーマンスの推奨事項については、「第 3 章 クエリと
削除の最適化」を参照してください。
トピック名 ページ
前提条件
テーブル情報の表示
クエリ結果の順序付け
カラムとローの選択
探索条件の使用
集約データの取得
分析データの取得
重複したローの削除
2
3
5
6
7
11
17
18
パフォーマンス&チューニング・ガイド 1
前提条件
前提条件
DBISQL の代わりにグラフィカルなフロントエンド・ツールを使用してデータ
ベースへのクエリを実行すると、ツールが生成する SQL 構文を表示できる場
合があります。たとえば、InfoMaker では [ テーブル ] ペインタ・バーの [SQL
構文 ] ボタンを選択して SQL 文を表示できます。
このチュートリアルでは、データベースから情報を取得するときに使用する
SELECT 文について説明します。SELECT 文のことを一般にクエリと呼びます。
これは、SELECT 文がデータベース内の情報についてデータベース・サーバに
問い合わせるためです。
注意 SELECT 文は用途の広いコマンドです。大きなデータベースから非常に
具体的な情報を取得するアプリケーションでは、SELECT 文がきわめて複雑に
なる場合があります。このチュートリアルでは、単純な SELECT 文だけを使
用します。以降のチュートリアルで、より高度なクエリについて説明します。
SELECT 文の完全な構文については、『Sybase IQ リファレンス・マニュアル』
の「第 6 章 SQL 文」 の「SELECT 文」 を参照してください。
チュートリアルのレッスンを読んで実行している間は、コンピュータで Sybase
IQ ソフトウェアを実行しておくことが理想的です。
このチュートリアルでは、すでに DBISQL を起動し、サンプル・データベース
に接続していることを前提にしています。まだこれらを行っていない場合は、
『Sybase IQ ユーティリティ・ガイド』の「第 2 章 Interactive SQL (dbisql) の使
用」を参照してください。
2 Sybase IQ
テーブル情報の表示
ここでは、employee テーブルのデータを表示します。
このチュートリアルで使用するサンプル・データベースは、架空の会社のもの
です。データベースには、従業員、部署、注文などについての情報が格納され
ています。すべての情報はテーブルに編成されています。
テーブルのリスト
『Sybase IQ の概要』では、Sybase Central で [ テーブル ] フォルダを開いてテー
ブルのリストを表示する方法について説明しました。システム・ストアド・プ
ロシージャの sp_iqtable を使用して、Interactive SQL からユーザ・テーブルを
リストすることもできます。システム・ストアド・プロシージャは、Sybase IQ
にストアド・プロシージャとして実装されているシステム関数です。
[SQL 文 ] ウィンドウで sp_iqtable と入力し、同じ名前のシステム・ストア
ド・プロシージャを実行します。
第 1 章 データベース・テーブルからのデータの選択
システム・ストアド・プロシージャの詳細については、『Sybase IQ リファレン
ス・マニュアル』の「第 10 章 システム・プロシージャ」を参照してください。
パフォーマンス&チューニング・ガイド 3
テーブル情報の表示
SELECT 文の使用
大文字と小文字の区別
このレッスンでは、データベース内のテーブルの 1 つを表示します。使用する
コマンドは、employee という名前のテーブル全体を表示します。
次のコマンドを実行します。
SELECT * FROM employee
アスタリスクは、テーブル内のすべてのカラムを表す省略記号です。
SELECT 文は employee テーブルのすべてのローとカラムを取得し、 DBISQL
[ 結果 ] ウィンドウに次の該当するものが表示されます。
emp_id manager_id emp_fname emp_lname dept_id
102 501 Fran Whitney 100
105 501 Matthew Cobb 100
129 902 Philip Chin 200
148 1293 Julie Jordan 300
160 501 Robert Breault 100
employee テーブルには、カラムに編成された複数のロー が格納されています。
各カラムには、emp_lname や emp_id などの名前が付いています。会社の従業
員 1 人ずつに 1 つのローがあり、それぞれのローは各カラムに値を持ちます。
たとえば、従業員 ID が 102 の従業員は Fran Whitney であり、そのマネージャ
は従業員 ID 501 です。
DBISQL [ メッセージ ] ウィンドウにも一部の情報が表示されます。この情報
については後で説明します。
テーブル名 employee は、実際のテーブル名がすべて小文字の場合にも、先頭
は大文字の E で表示されます。Sybase IQ データベースは、文字列の比較で大
文字と小文字を区別するもの ( デフォルト ) と区別しないものを作成できます
が、その識別子では常に大文字と小文字は区別されません。
注意 このマニュアルの例は、CREATE DATABASE 修飾子の CASE IGNORE
を使用して、大文字と小文字を区別しないように作成されています。デフォル
トは CASE RESPECT であり、こちらの方がパフォーマンスが向上します。
データベースの作成方法については、『Sybase IQ システム管理ガイド』の「第
5 章 データベース・オブジェクトの使用」を参照してください。
SELECT の代わりに select または Select と入力することもできます。Sybase IQ
では、キーワードを大文字、小文字、またはその両方の組み合わせで入力でき
ます。このマニュアルでは、通常、SQL キーワードに大文字を使用しています。
DBISQL 環境の操作方法と DBISQL の使用法は、オペレーティング・システム
によって異なります。
データをスクロールして DBISQL 環境を操作する方法については、『Sybase IQ
ユーティリティ・ガイド』の「第 2 章 Interactive SQL (dbisql) の使用」 を参照
してください。
4 Sybase IQ
クエリ結果の順序付け
ここでは、SELECT 文に ORDER BY 句を追加して、結果をアルファベット順
または数値順に表示します。
特に指定しないかぎり、Sybase IQ ではテーブルのローが順不同で表示されます。
テーブルのローを意味のある順序で表示した方が便利なことがよくあります。
たとえば、従業員をアルファベット順で表示したいような場合です。
従業員をアルファベット
順にリストする
次の例は、SELECT 文に ORDER BY 句を追加して、結果をアルファベット順
に取得する方法を示します。
SELECT * FROM employee ORDER BY emp_lname
emp_id manager_id emp_fname emp_lname dept_id
1751 1576 Alex Ahmed 400
1013 703 Joseph Barker 500
591 1576 Irene Barletta 400
191 703 Jeannette Bertrand 500
1336 1293 Janet Bigelow 300
第 1 章 データベース・テーブルからのデータの選択
注意
句の順序は重要です。ORDER BY 句は FROM 句と SELECT 句の後に指定します。
注意 FROM 句を省略した場合、またはクエリ内のすべてのテーブルが SYSTEM
dbspace にある場合、クエリは Sybase IQ ではなく Adaptive Server Anywhere に
よって処理されます。これにより、特に構文上およびセマンティック上の制限
とオプション設定の効果に関して、クエリが異なる動作をする場合があります。
処理に適用されるルールについては Adaptive Server Anywhere のマニュアルを参
照してください。
FROM 句を必要としないクエリを実行する場合は、“FROM iq_dummy” 句を追
加して、クエリを強制的に Sybase IQ で処理できます。iq_dummy は、データ
ベースに作成される、ローが 1 つ、カラムが 1 つのテーブルです。
パフォーマンス&チューニング・ガイド 5
カラムとローの選択
カラムとローの選択
多くの場合、表示する必要がある情報は、テーブル内の一部のカラムだけです。
たとえば、従業員への誕生日カードを作成するには、emp_lname、dept_id 、
birth_date の各カラムを表示すれば十分です。
各従業員の姓、部署、
誕生日をリストする
ここでは、各従業員の誕生日、姓、部署 ID を選択します。次のコマンドを入
力します。
emp_lname dept_id birth_date ...
Whitney 100 1958-06-05 ...
Cobb 100 1960-12-04 ...
Chin 200 1966-10-30 ...
Jordan 300 1951-12-13 ...
Breault 100 1947-05-13 ...
SELECT emp_lname, dept_id, birth_date
FROM employee
カラムの並べ替え
ローの順序付け
この 3 つのカラムは、SELECT コマンドに入力した順序で表示されています。
カラムを並べ替えるには、コマンドで指定するカラム名の順序を変更します。
たとえば、birth_date カラムを左側に配置するには、次のコマンドを使用します。
SELECT birth_date, emp_lname, dept_id
FROM employee
次のように、特定のカラムだけを表示すると同時に、ローの順序を指定できます。
SELECT birth_date, emp_lname, dept_id
FROM employee
ORDER BY emp_lname
次のコマンドのアスタリスクは、テーブル内のすべてのカラムを表す省略記号
です。
SELECT * FROM employee
6 Sybase IQ
探索条件の使用
❖ John という名前のすべての従業員をリストするには
第 1 章 データベース・テーブルからのデータの選択
ここでは、WHERE 句の複合探索条件、パターン・マッチング、探索条件ショー
トカットを使用して、日付を比較する手順について説明します。
employee テーブルにある一部の従業員の情報だけを表示したいことがあり
ます。SELECT 文に WHERE 句を追加すると、テーブルから一部のローだけ
を選択できます。
たとえば、John という名前の従業員だけを表示するとします。
• 次のコマンドを入力します。
SELECT *
FROM employee
WHERE emp_fname = 'John'
emp_id manager_id emp_fname emp_lname dept_id
318 1576 John Crow 400
862 501 John Sheffield 100
1483 1293 John Letiecq 300
アポストロフィおよび
大文字と小文字の区別
注意
• 名前 'John' はアポストロフィ ( 一重引用符 ) で囲む必要があります。アポ
ストロフィは、John が文字列であることを示します。引用符 ( 二重引用符 )
には別の意味があります。引用符を使用すると、無効な文字列を有効なカ
ラム名やその他の識別子として使用できるようになります。
• サンプル・データベースでは大文字と小文字が区別されないため、'JOHN'、
'john'、 'John' のいずれで検索しても同じ結果が返ります。
次のように、これまで学習した句を組み合わせて実行できます。
SELECT emp_fname, emp_lname, birth_date
FROM employee
WHERE emp_fname = 'John'
ORDER BY birth_date
• 句を指定する順序は重要です。FROM 句を最初に指定し、その後に WHERE
句、ORDER BY 句の順に指定します。これ以外の順序で句を入力すると、
構文エラーが返されます。
• 文を複数の行に分ける必要はありません。[SQL 文 ] ウィンドウに自由な
フォーマットで文を入力できます。入力した文が画面の行数を超えると、
[SQL 文 ] ウィンドウのテキストがスクロールします。
パフォーマンス&チューニング・ガイド 7
探索条件の使用
クエリでの日付の比較
1964 年 3 月 3 日より前に
生まれた従業員をリスト
する
検索対象の正確な値がわからない場合や、一連の値を表示したい場合があり
ます。WHERE 句で比較を使用すると、探索条件を満たす一連のローを選択で
きます。
次の例は、日付の不等号探索条件の使い方を示します。次のコマンドを入力し
ます。
SELECT emp_lname, birth_date
FROM employee
WHERE birth_date < 'March 3, 1964'
emp_lname birth_date
Whitney 1958-06-05 00:00:00.000
Cobb 1960-12-04 00:00:00.000
Jordan 1951-12-13 00:00:00.000
Breault 1947-05-13 00:00:00.000
Espinoza 1939-12-14 00:00:00.000
Dill 1963-07-19 00:00:00.000
Sybase IQ は、birth_date カラムに日付が格納されていることを認識し、自動的
に 'March 3, 1964' を日付に変換します。
WHERE 句での複合探索条件
これまでに、比較演算子の等号 (=) と未満 (<) を見てきました。Sybase IQ では、
より大きい (>) 、以上 (>=) 、以 下 (<=) 、等しくない (<>) などのその他の比較演
算子もサポートされています。
これらの条件を AND や OR を使って組み合わせると、より複雑な探索条件を
作成できます。
リストの修飾
8 Sybase IQ
1964 年 3 月 3 日より前に生まれた従業員のうち、Whitney という名前の従業員
を除くすべての従業員をリストするには、次のコマンドを入力します。
SELECT emp_lname, birth_date
FROM employee
WHERE birth_date < '1964-3-3'
AND emp_lname <> 'Whitney'
emp_lname birth_date
Cobb 1960-12-04 00:00:00.000
Jordan 1951-12-13 00:00:00.000
Breault 1947-05-13 00:00:00.000
Espinoza 1939-12-14 00:00:00.000
Dill 1963-07-19 00:00:00.000
Francis 1954-09-12 00:00:00.000
探索条件でのパターン・マッチング
もう 1 つの便利な検索方法が、パターンによる検索です。SQL では、LIKE と
いう語を使用してパターンを検索します。LIKE の使い方について、例を挙げ
て説明します。
姓が BR で始まる従業員
をリストする
姓検索の修飾
次のコマンドを入力します。
SELECT emp_lname, emp_fname
FROM employee
WHERE emp_lname LIKE 'br%'
emp_lname emp_fname
Breault Robert
Braun Jane
探索条件内の % は、BR という文字の後に別の文字が何文字続いてもかまわな
いことを示します。
姓が BR で始まり、その直後または数文字後に T という文字を含み、T で終わ
るかさらに別の文字が続くすべての従業員をリストするには、次のコマンドを
使用します。
SELECT emp_lname, emp_fname
FROM employee
WHERE emp_lname LIKE 'BR%T%'
emp_lname emp_fname
Breault Robert
第 1 章 データベース・テーブルからのデータの選択
最初の % 記号は文字列 “eaul” と一致し、2 番目の % 記号は空の文字列 ( 文字
なし ) と一致します。
LIKE で使用できるもう 1 つの特殊文字に _ ( アンダースコア) 文字があります。
これは 1 文字と一致します。
BR_U% というパターンは、 BR で始まり、4 番目の文字が U であるすべての名
前と一致します。Braun では、_ が A という文字と一致し、% が N と一致します。
パフォーマンス&チューニング・ガイド 9
探索条件の使用
発音によるローのマッチング
SOUNDEX 関数を使用すると、スペルだけでなく読みによってもローをマッチ
ングできます。たとえば、電話メッセージが残されていて、その宛先が “Ms.
Brown” のように発音されていたとします。社内で Brown のように発音される
名前を持つ従業員を見つける必要があります。
発音による姓の検索
Brown のように発音される姓を持つ従業員をリストするには、次のコマンドを
入力します。
SELECT emp_lname, emp_fname
FROM employee
WHERE SOUNDEX( emp_lname ) = SOUNDEX( 'Brown' )
emp_lname emp_fname
Braun Jane
この探索条件に一致する従業員は Jane Braun だけです。
探索条件を入力するためのショートカット
省略形 BETWEEN の
使用
省略形 IN の使用
SQL には、探索条件を入力するための省略形が 2 つあります。 1 つは BETWEEN
であり、値を範囲で検索するときに使用します。この例を次に示します。
SELECT emp_lname, birth_date
FROM employee
WHERE birth_date BETWEEN '1964-1-1'
AND '1965-3-31'
これは次のコマンドに相当します。
SELECT emp_lname, birth_date
FROM employee
WHERE birth_date >= '1964-1-1'
AND birth_date <= '1965-3-31'
もう 1 つの省略形 IN は、複数のいずれかの値を検索するときに使用します。
次にコマンド例を示します。
SELECT emp_lname, emp_id
FROM employee
WHERE emp_lname IN ('Yeung','Bucceri','Charlton')
上記のコマンドは、次のコマンドと同じです。
SELECT emp_lname, emp_id
FROM employee
WHERE emp_lname = 'Yeung'
OR emp_lname = 'Bucceri'
OR emp_lname = 'Charlton'
10 Sybase IQ
集約データの取得
集合関数の概要
第 1 章 データベース・テーブルからのデータの選択
ここでは、集約情報を返すクエリを構築する方法について説明します。集約情
報の例を次に示します。
• カラム内のすべての値の合計
• カラム内のエントリの数
• カラム内のエントリの平均値
従業員の人数を調べたいとします。次の文は、employee テーブルのローの数
を取得します。
SELECT count( * )
FROM employee
count(*)
75
このクエリによって、 1 つのカラム (count(*) というタイトル ) と 1 つのロー
( 従業員数が格納されている ) だけで構成されるテーブルが返されます。
次のコマンドは、やや複雑な集約クエリです。
SELECT count( * ),
min( birth_date ),
max( birth_date )
FROM employee
count(*) min( birth_date ) max( birth_date )
75 1936-01-02 1973-01-18
このクエリの結果セットは、3 つのカラムと 1 つのローで構成されます。3 つ
のカラムには、従業員数、年齢が最も高い従業員の誕生日、年齢が最も低い従
業員の誕生日が格納されています。
COUNT 、MIN 、MAX を「集合関数」と呼びます。これらの各関数は、テーブ
ル全体の情報を要約します。集合関数は、MIN 、MAX、COUNT、AV G 、SUM、
STDDEV 、VA R I A N C E と全部で 7 個あります。すべての関数が、パラメータ
としてカラム名または式を使用します。前述のように、COUNT はアスタリス
クもパラメータとして使用します。
パフォーマンス&チューニング・ガイド 11
集約データの取得
集合関数によるグループ化されたデータの取得
テーブル全体についての情報を取得することに加えて、集合関数をローのグ
ループに対して使うこともできます。
ローのグループに対する
集合関数の使用
各営業担当者が受け持つ注文数をリストするには、次のコマンドを入力します。
SELECT sales_rep, count( * )
FROM sales_order
GROUP BY sales_rep
sales_rep count(*)
129 57
195 50
299 114
467 56
667 54
このクエリの結果は、各営業担当者の ID 番号別に、営業担当者の ID が格納さ
れたローと、sales_order テーブル内でその ID 番号を持つローの数で構成され
ます。
GROUP BY 句を使用すると、結果のテーブルには、GROUP BY で指定したカ
ラムで見つかった値別のローが表示されます。
グループの制限
WHERE 句を使用して、クエリでローを制限する方法についてはすでに説明し
ました。GROUP BY 句の制限には、HAVING キーワードを使用します。
GROUP BY 句の制限
12 Sybase IQ
注文数が 55 を超えるすべての営業担当者をリストするには、次のコマンドを
入力します。
SELECT sales_rep, count( * )
FROM sales_order
GROUP BY sales_rep
HAVING count( * ) > 55
sales_rep count(*)
129 57
299 114
467 56
1142 57
注意 GROUP BY は常に HAVING の前に指定します。同様に、WHERE は GROUP
BY の前に指定します。
第 1 章 データベース・テーブルからのデータの選択
WHERE と GROUP BY
の使用
小計計算の活用
ROLLUP の使用
注文数が 55 を超えており、ID が 1000 より大きいすべての営業担当者をリス
トするには、次のコマンドを入力します。
SELECT sales_rep, count( * )
FROM sales_order
WHERE sales_rep > 1000
GROUP BY sales_rep
HAVING count( * ) > 55
Sybase IQ クエリ・オプティマイザは、それによってパフォーマンスが向上す
る場合、述部を HAVING 句から WHERE 句に移動します。たとえば、上記の
例で WHERE 句の代わりに述部を次のように指定した場合、クエリ・オプティ
マイザは述部を WHERE 句に移動します。
GROUP BY sales_rep
HAVING count( *) > 55
AND sales_rep > 1000
Sybase IQ は、この最適化を (OR や IN を伴わない ) 単純な条件を使って実行し
ます。このため、WHERE 句と HAVING 句の両方を含むクエリを構築するとき
は、できるだけ多くの条件を WHERE 句で指定するようにします。
日付や場所などの次元によって異なるデータがある場合に、各次元でデータが
どのように異なるかを調べることが必要になる場合があります。ROLLUP 演
算子と CUBE 演算子を使用すると、グループ化カラムへの参照のリストから
複数レベルの小計と総計を作成できます。小計は、最も詳細なレベルから総計
まで「ロールアップ」します。たとえば、販売データを分析している場合は、
同じクエリを使用して全体の平均と年別の平均販売数を計算できます。
年別、モデル別、色別の合計自動車販売数を選択するには、次のコマンドを使
用します。
SELECT year, model, color, sum(sales)
FROM sales_tab
GROUP BY ROLLUP (year, model, color);
year model color sales
1990 Chevrolet red 5
1990 Chevrolet white 87
1990 Chevrolet blue 62
1990 Chevrolet NULL 154
1990 Ford blue 64
1990 Ford red 62
1990 Ford white 63
1990 Ford NULL 189
1990 NULL NULL 343
パフォーマンス&チューニング・ガイド 13
集約データの取得
CUBE の使用
year model color sales
1991 Chevrolet blue 54
1991 Chevrolet red 95
1991 Chevrolet white 49
1991 Chevrolet NULL 198
1991 Ford blue 52
1991 Ford red 55
1991 Ford white 9
1991 Ford NULL 116
1991 NULL NULL 314
NULL NULL NULL 657
このクエリを処理するときに、Sybase IQ は最初に、指定された 3 つすべての
グループ化式 (year 、model 、color) によってデータをグループ化し、次に最後
の式 (color) を除くすべてのグループ化式によってデータをグループ化します。
5 番目のローの NULL は、color カラムの ROLLUP 値、つまり、そのモデルの
すべての色の合計販売数を示します。343 は、1990 年のすべてのモデルと色の
合計販売数を表し、314 は 1991 年の合計販売数を表します。最後のローは、す
べての年のすべてのモデルとすべての色の合計販売数を表します。
ROLLUP 演算子には、引数としてグループ化式の順番リストを指定する必要
があります。他のグループを含むグループをリストするときは、先に大きい方
のグループをリストします ( たとえば、state をリストしてから city をリスト
します )。
ROLLUP 演算子は、集合関数の SUM、COUNT、AV G 、MIN、MAX、STDDEV、
VA R I A N C E とともに使用できます。ただし、ROLLUP は COUNT DISTINCT と
SUM DISTINCT をサポートしていません。
次のクエリでは、人々の州 ( 地理的位置 )、性別、教育水準、所得を含む国勢調
査のデータを使用します。GROUP BY 句の CUBE 拡張を使用すると、census
テーブル内の国勢調査データを 1 回参照するだけで、州、性別、教育水準の国
勢調査全体の平均所得を計算し、state、gender、education の各カラムの可能な
すべての組み合わせの平均所得を計算できます。たとえば、すべての州のすべ
ての女性の平均所得を計算する場合や、教育水準と地理的位置を基準に国勢調
査のすべての人々の平均所得を計算する場合に、CUBE 演算子を使用します。
CUBE でグループを計算するときに、CUBE は計算されたグループのカラムに
NULL 値を挿入します。各ローが表すグループの種類と、その NULL がデータ
ベースに格納されている NULL なのか、CUBE が挿入した NULL なのかを区
別することは困難です。この問題を解決するのが GROUPING 関数です。指定
されたカラムが上位レベルのグループにマージされている場合、この関数は 1
を返します。
14 Sybase IQ