示例
示例
-- 可走索引:前缀匹配
SELECT * FROM users WHERE name LIKE 'wang%';
-- 不可走索引:前置通配
SELECT * FROM users WHERE name LIKE '%wang%';
-- 替代一:MySQL 全文索引
ALTER TABLE articles ADD FULLTEXT INDEX ft_content (content);
SELECT * FROM articles WHERE MATCH(content) AGAINST('mysql' IN BOOLEAN MODE);
-- 替代二:PostgreSQL trigram 索引(需 pg_trgm)
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE INDEX idx_content_trgm ON articles USING GIN (content gin_trgm_ops);
SELECT * FROM articles WHERE content LIKE '%mysql%';| 转义 | 字面量中的百分号与下划线可用 ESCAPE 指定转义符 |
|---|---|
| 反转列 | 固定后缀搜索可存反转后的字符串,再按前缀匹配 |
| 选择 | 按匹配模式与数据规模在全文检索、trigram 与外部搜索引擎间取舍 |