Register and share your invite link to earn from video plays and referrals.

cv usk
@cv_usk
AI / Software Research Notes AI Agent, LLMOps, MLOps, Software Architecture 投稿は個人の意見です。
Joined May 2026
258 Following    225 Followers
# Neo4jの機能と実践的な使い方 ⚡ 「グラフDBでもインデックス設計が性能の8割」。MATCHの起点となるプロパティに正しい索引を張るだけで、検索が O(n) から O(log n) に変わります。 🏷️ タイトル: Range / Text / Point / Composite index 🔗 URL: 📘 概要 インデックスはノード・リレーションシップ・プロパティの複製で、主データへの高速なアクセス経路を提供します。作成後はDBMSが自動でメンテナンスします。MATCHのアンカー(起点)探索を高速化し、クエリプランナが述語に応じて自動選択します。 ⚙️ 機能の説明 ・Range(既定): 等価・範囲比較・`IN`・`STARTS WITH` など最も多くの述語を解決します。まず張るべき索引です。 ・Text: `STRING` 専用で、`CONTAINS` と `ENDS WITH` を最適化します。部分一致の画面検索向きです。 ・Point: 空間 `POINT` 値専用で、距離検索やバウンディングボックス内検索を最適化します。 ・Composite: 複数プロパティをまとめて索引化し、複数条件の絞り込みを一度に解決します。 ・Token lookup: ラベル/リレーションシップ型の探索を高速化する基盤索引です。 ・このほか全文検索インデックスとベクトルインデックス(類似検索/GenAI向け)があります。 🛠️ 実践的な使い方 起点プロパティへの range / composite / text / point インデックスの作成例です。 ```cypher CREATE INDEX user_email IF NOT EXISTS FOR (u:User) ON ( CREATE INDEX order_composite IF NOT EXISTS FOR (o:Order) ON (o.customerId, o.status); CREATE TEXT INDEX product_name_text IF NOT EXISTS FOR (p:Product) ON ( CREATE POINT INDEX store_loc IF NOT EXISTS FOR (s:Store) ON (s.location); ``` 確認・削除は次の通りです。 ```cypher SHOW INDEXES; DROP INDEX user_email IF EXISTS; ``` 💡 ユースケース ・` を MATCH の起点にするアプリで、ルックアップを O(log n) 化。 ・`STARTS WITH` は range、`CONTAINS`/`ENDS WITH` は text、地理検索は point を選ぶ画面検索。 ⚠️ 注意点 ・どの索引が効くかは述語次第です。`CONTAINS` は range では効かず text が必要、という対応関係を意識します。 ・索引は書き込みコストとストレージを増やします。実際に使われるか `PROFILE` で確認してから運用に乗せます。 ・複合インデックスは先頭プロパティから順に効くため、列の順序が性能を左右します。 #Neo4j# #Cypher#
Show more