indexing-strategies

SQLiteにおけるインデックス設計戦略の専門知識。 B-Treeインデックス、部分インデックス、式インデックス、カバリングインデックスの特性と選択基準を提供。 Turso + Drizzle ORM環境での実装を前提とする。 Anchors: • Designing Data-Intensive Applications (Martin Kleppmann) / 適用: データモデリング・インデックス設計原則 / 目的: 体系的なインデックス戦略の確立 • SQLite Documentation / 適用: B-Tree実装・クエリプランナー挙動 / 目的: SQLite特有の最適化技法の適用 • Drizzle ORM / 適用: index()構文・マイグレーション / 目的: 型安全なスキーマ定義 Trigger: Use when designing database indexes, analyzing query performance, optimizing read operations, evaluating index candidates, or implementing Drizzle ORM index migrations. Keywords: index, indexing, B-Tree, query performance, SQLite, Drizzle, cardinality, selectivity, covering index, partial index, expression index.

$ インストール

git clone https://github.com/daishiman/AIWorkflowOrchestrator /tmp/AIWorkflowOrchestrator && cp -r /tmp/AIWorkflowOrchestrator/.claude/skills/indexing-strategies ~/.claude/skills/AIWorkflowOrchestrator

// tip: Run this command in your terminal to install the skill


name: indexing-strategies description: | SQLiteにおけるインデックス設計戦略の専門知識。 B-Treeインデックス、部分インデックス、式インデックス、カバリングインデックスの特性と選択基準を提供。 Turso + Drizzle ORM環境での実装を前提とする。

Anchors: • Designing Data-Intensive Applications (Martin Kleppmann) / 適用: データモデリング・インデックス設計原則 / 目的: 体系的なインデックス戦略の確立 • SQLite Documentation / 適用: B-Tree実装・クエリプランナー挙動 / 目的: SQLite特有の最適化技法の適用 • Drizzle ORM / 適用: index()構文・マイグレーション / 目的: 型安全なスキーマ定義

Trigger: Use when designing database indexes, analyzing query performance, optimizing read operations, evaluating index candidates, or implementing Drizzle ORM index migrations. Keywords: index, indexing, B-Tree, query performance, SQLite, Drizzle, cardinality, selectivity, covering index, partial index, expression index. version: 2.0.0

Indexing Strategies Skill

概要

SQLiteのインデックス設計に関する専門知識を提供し、クエリパターンとデータ特性に基づいて最適なインデックス戦略を選択・設計します。

ワークフロー

本スキルは3つのPhaseで構成されます。各Phaseは対応するTaskで実行されます。

Phase 1: インデックス要件分析

目的: クエリパターンとデータ特性を分析し、インデックス候補を特定する

Task: agents/analyze-index-requirements.md

入力:

  • テーブルスキーマ情報(Drizzle ORM定義)
  • クエリパターン(頻繁に実行されるクエリ)
  • データ量とカーディナリティ情報

出力:

  • クエリパターン分析結果
  • カーディナリティ評価
  • インデックス候補リスト
  • パフォーマンス要件

参照リソース:

Phase 2: インデックス戦略設計

目的: 具体的なインデックス設計を作成し、Drizzle ORM形式でマイグレーションコードを提供する

Task: agents/design-index-strategy.md

入力:

  • Phase 1の分析結果

出力:

  • インデックス設計詳細
  • Drizzle ORM マイグレーションコード
  • トレードオフ分析(書き込みコスト vs 読み取り効果)

参照リソース:

Phase 3: インデックス設計検証

目的: 設計の妥当性を検証し、実装前の最終チェックと記録を実施する

Task: agents/validate-index-design.md

入力:

  • Phase 2の設計詳細

出力:

  • 検証結果レポート
  • 改善提案(問題がある場合)
  • 使用記録(LOGS.mdへ自動記録)

参照リソース:

スクリプト:

  • scripts/analyze-indexes.mjs - 既存インデックス分析、重複検出
  • scripts/log_usage.mjs - 使用記録の自動保存

Task仕様ナビゲーション

TaskPhase役割入力出力
analyze-index-requirements.md1要件分析スキーマ・クエリインデックス候補
design-index-strategy.md2戦略設計分析結果設計詳細・コード
validate-index-design.md3設計検証設計詳細検証結果・改善提案

ベストプラクティス

すべきこと

  • 新規テーブル作成時にインデックス戦略を事前設計する
  • クエリパフォーマンス問題発生時に体系的に分析する
  • インデックス追加前に必ずトレードオフを評価する
  • JSON検索には式インデックスを検討する
  • 複合インデックスでは選択性の高いカラムを先頭に配置する

避けるべきこと

  • すべてのカラムにインデックスを作成する(書き込みコスト増大)
  • 既存インデックスとの重複を確認せずに追加する
  • カーディナリティが低いカラム(性別、ブール値など)に単独インデックスを作成する
  • トレードオフを文書化せずに実装する

リソース参照

段階的学習(Progressive Disclosure)

詳細リソース

スクリプト

analyze-indexes.mjs

既存インデックスの使用状況を分析し、未使用・重複インデックスを検出します。

node scripts/analyze-indexes.mjs [database-path]

log_usage.mjs

スキル使用履歴を自動記録し、評価メトリクスを更新します。

node scripts/log_usage.mjs --result success --phase "validate-index-design"

validate-skill.mjs

スキル構造がspec準拠であることを検証します。

node scripts/validate-skill.mjs

変更履歴

VersionDateChanges
2.0.02025-12-24Spec alignment, Task仕様追加、Progressive Disclosure対応
1.0.0-初版作成