# 查询分析排障

用户说“查不到”“结果不对”“SQL/SPL 报错”时，按这个顺序排。

## 1. 时间范围

- 先确认 `--from` / `--to` 是否覆盖了目标时间范围
- 刚写入的日志可能存在秒级索引构建延迟

## 2. 索引配置

- 是否已经开启索引
- 目标字段是否建了字段索引
- 是否误用了全文索引，导致分词规则和字段索引不一致
- 中文日志是否需要中文分词
- 修改索引后，是否误以为历史数据会自动生效

## 3. 字段类型和统计

- 范围查询依赖 `long` / `double`
- SQL 分析依赖字段开启统计
- 文本统计字段默认长度有限制，过长内容可能被截断
- 查询型 Logstore 不支持统计

## 4. 语法问题

- 索引查询里的 `AND` 优先级高于 `OR`
- 模糊查询不能写成 `*error`
- 短语匹配用 `#"..."`
- 字段存在查询用 `key: *`
- SQL 和 SPL 不能混写
- SPL 字符串默认不转义，`\n` 不是换行

## 5. 字段名问题

- 索引配置中的字段名大小写敏感
- 日志里的字段名如果和索引配置大小写不一致，索引会失效
- SPL 中字段名包含特殊字符时需要双引号

## 6. 什么时候建议换方案

- 未建索引但必须分析：切到 SCAN 模式
- 索引分词天然无法做精确短语：改用 SPL `where ... like` 或 SQL
- 大数据量/高并发 SQL 性能不足：建议 SQL 增强
- 关键指标要求零误差：建议完全精确 SQL

## 本地源文档

- `./query_analysis/overview.yaml`
- `./query_analysis/indexSearch.yaml`
- `./query_analysis/indexConfig.yaml`
- `./query_analysis/sql.yaml`
- `./spl/overview.yaml`
