VillageSQL is a drop-in replacement for MySQL with extensions.
All examples on this page work on VillageSQL. Install Now →
このガイドには VillageSQL 0.0.4 以降が必要です。
vsql_cube 拡張機能は cube カスタム型を追加し、どちらの種類のクエリも自然に書けるようにします。
問題
各製品に価格、平均評価、およびレビュー数がある製品カタログがあるとします。購入者は、価格が 50~200 ドル、評価が 3.5 以上、レビューが 50 件以上の製品を求めています。これは 3 条件の AND です。VillageSQL の場合: cube 型
cube 型は、n 次元空間の点またはボックスを格納します。点は位置であり、ボックスは 2 つの角の座標で定義される領域です。どちらも通常の列に格納されます。
cube は MySQL の予約語なので、DDL ではバッククォートで囲みます。次元パラメータ(3)は必須です。数値のない素の cube はサポートされていません。
データの挿入
座標の文字列を直接挿入し、列自身の変換に解析させます。cube_point_nd() で
包まないでください。それはパラメータなしの cube を返し、次元パラメータ付きの
cube(3) 列に暗黙的にキャストできません(ERROR 3219)。
(price, rating, review_count) で、製品ごとに 1 つの点です。
cube_contains による範囲クエリ
検索領域をボックスとして定義します。cube_box_nd() は下側の角の座標に続いて上側の角の座標を受け取るため、3 次元のボックスには 6 つの数値を渡します。
cube_contains(@region, attrs) は、製品の点がボックスの中にあるとき 1 を返します。3 つの AND 条件すべてを一度に書いたものと等価ですが、距離クエリと組み合わせることもできます。
cube_distance による最近傍
ある製品に最も似た製品を見つけるには、属性空間でのユークリッド距離を測ります。重なりの確認
cube_overlaps() は、2 つのボックスが何らかの空間を共有する場合に 1 を返します。製品がいくつかのプロモーション帯のいずれかに該当するかどうかを確認するのに役立ちます。
トラブルシューティング
関連項目
- MySQL でのベクトル埋め込みの生成 — 多次元の類似度に対するもう 1 つのアプローチとしての AI 生成ベクトル
- MySQL で全文検索を実装する方法 — テキストデータに対する代替手段としてのキーワードベースの検索
- データに適した列の型を選ぶ方法 — cube と標準の列の型のどちらを使うべきか