云数据库 veDB MySQL 版
MySQL 类型 | 用途 | 示例 |
MySQL 类型 | 用途 | 示例 |
VECTOR(n) | 向量嵌入 | embedding VECTOR(512) NOT NULL |
TEXT | 全文检索 | title TEXT NOT NULL |
BLOB/LONGBLOB/MEDIUMBLOB/TINYBLOB | 全文检索 | content LONGBLOB NOT NULL |
VARCHAR(n) | 标量过滤 | category VARCHAR(50) NOT NULL |
INT/BIGINT | 数值过滤 | price INT NOT NULL |
FLOAT/DOUBLE | 浮点过滤 | rating FLOAT NOT NULL |
BOOL | 布尔过滤 | is_active BOOL NOT NULL |
TIMESTAMP/DATETIME | 时间过滤 | created_at TIMESTAMP NOT NULL |
类型 | 操作符 | | 示例 |
类型 | 操作符 | | 示例 |
基本比较操作符 | = | | WHERE category = 'electronics' |
| != / <> | | WHERE price != 100.0 |
| > | | WHERE price > 50.0 |
| >= | | WHERE rank_score >= 80 |
| < | | WHERE price < 200.0 |
| <= | | WHERE rank_score <= 90 |
复合操作符 | IN 操作符 | 字符串 IN | WHERE category IN ('electronics', 'books', 'toys') |
| | 整数 IN | WHERE rank_score IN (85, 90, 78) |
| | 大整数 IN | WHERE large_id IN (1000000001, 1000000003, 1000000005) |
| | 布尔值 IN | WHERE is_active IN (true, false) |
| BETWEEN 操作符 | 数值 BETWEEN | WHERE price BETWEEN 50.00 AND 200.00 WHERE rank_score BETWEEN 70 AND 90 |
| | 字符串 BETWEEN | WHERE category BETWEEN 'a' AND 'z' -- 当前使用term查询,应该使用range |
逻辑操作符 | AND 操作符 | 简单 AND | WHERE category = 'electronics' AND price > 100.00 |
| | 多个 AND 条件 | WHERE category = 'electronics' AND price > 50.00 AND price < 300.00 |
| | 不同操作符组合 | WHERE category = 'electronics' AND rank_score IN (85, 92, 68) |
| | AND with BETWEEN | WHERE category = 'electronics' AND price BETWEEN 100.00 AND 250.00 |
| OR 操作符 | 简单 OR | WHERE category = 'electronics' OR category = 'books' |
| | 数值 OR | WHERE price < 50.00 OR price > 250.00 |
| | 混合类型 OR | WHERE category = 'games' OR rank_score > 85 |
嵌套层级 | 示例 |
嵌套层级 | 示例 |
2 层嵌套 | WHERE category = 'electronics' AND (price < 100.00 OR price > 200.00) |
中等复杂度嵌套 | WHERE (category = 'electronics' AND price > 100.00) OR (category = 'books' AND price < 50.00) |
多分支嵌套 | WHERE (category = 'electronics' OR category = 'toys') AND (price BETWEEN 50.00 AND 200.00) |
深度嵌套 | WHERE ((category = 'electronics' AND price > 80.00) OR (category = 'books' AND rating >= 4.0)) AND (is_active = true OR quantity > 30) 注意 推荐使用 1~2 层嵌套,4 层及以上可能会导致 Core Dump。 |
SQL 操作 | 示例 |
SQL 操作 | 示例 |
子查询 | INSERT INTO t_nested (category, price, rank_score, is_active, large_id, rating, quantity, emb) SELECT category, price, rank_score, is_active, large_id, rating, quantity, emb FROM t_nested FORCE INDEX(idx_ann) WHERE price > (SELECT AVG(price) FROM t_nested) ORDER BY l2_distance(TO_VECTOR('[5.22, 9.55, 2.88, 0.33]'), emb) LIMIT 3; |
类型 | SQL 操作 | 示例 |
类型 | SQL 操作 | 示例 |
操作符 | NOT 操作 | WHERE NOT (category = 'electronics') |
| LIKE 模式匹配 | WHERE category LIKE 'elect%' |
| 正则表达式 | WHERE category REGEXP '^elect' |
| NULL 检查 | WHERE category IS NULL WHERE category IS NOT NULL |
| EXISTS 子查询 | WHERE EXISTS (SELECT 1 FROM other_table) |
函数调用 | 字符串函数 | WHERE UPPER(category) = 'ELECTRONICS' WHERE LENGTH(category) > 5 |
| 数学函数 | WHERE ABS(price) > 100 WHERE ROUND(price, 2) = 99.99 |
| 日期函数 | WHERE DATE(created_at) = '2024-01-01' |
| 聚合函数 | WHERE price > (SELECT AVG(price) FROM table) |
复杂表达式 | 算术表达式 | WHERE price * 1.1 > 100 WHERE (price + tax) * discount > 100 |
| 字段间比较 | WHERE price > cost WHERE start_date < end_date |