SELECT 查询基础:投影、标签过滤与时间范围
SELECT 查询基础:投影、标签过滤与时间范围
查询数据是时序数据库最核心的操作。SonnetDB 的 SELECT 语句兼容标准 SQL,同时针对时序场景提供了专门的优化。本文将介绍最基本的 SELECT 查询操作。
基础投影查询
最简单的查询是选择所有列或指定列。* 表示返回所有字段,这在探索数据时非常方便:
-- 查询所有列(用于快速浏览数据)
SELECT *
FROM sensor_data
LIMIT 10;
-- 投影查询:只选择需要的列,减少数据传输量
SELECT ts, temperature, humidity
FROM sensor_data
LIMIT 10;
在生产环境中,建议始终使用投影查询指定列名。这不仅能减少网络开销,还能让查询意图更加清晰。
标签过滤(TAG 过滤)
时序数据中的标签列(TAG)用于描述数据来源的元信息,例如设备 ID、地区、类型等。在 WHERE 子句中过滤标签可以精准定位目标数据:
-- 等值过滤:查询指定传感器的数据
SELECT ts, temperature
FROM sensor_data
WHERE sensor_id = 'sensor-001'
ORDER BY ts
LIMIT 100;
-- 多标签组合过滤
SELECT ts, temperature, humidity
FROM sensor_data
WHERE sensor_id = 'sensor-001'
AND region = 'beijing'
ORDER BY ts
LIMIT 100;
-- IN 条件:查询多个指定设备
SELECT ts, temperature
FROM sensor_data
WHERE sensor_id IN ('sensor-001', 'sensor-002', 'sensor-003')
ORDER BY ts;
标签过滤在 SonnetDB 中经过特别优化,过滤效率远高于字段列(FIELD)过滤,因此高频使用的过滤条件应设计为 TAG 列。
时间范围过滤
时间范围过滤是时序查询中最重要的 WHERE 条件。SonnetDB 利用时间戳索引来加速范围查询:
-- 查询某一天的数据
SELECT ts, sensor_id, temperature
FROM sensor_data
WHERE ts >= '2025-06-01T00:00:00Z'
AND ts < '2025-06-02T00:00:00Z'
ORDER BY ts;
-- 查询最近一小时的实时数据
SELECT ts, sensor_id, temperature
FROM sensor_data
WHERE ts >= NOW() - INTERVAL '1 hour'
ORDER BY ts;
-- 精确时间点查询
SELECT ts, sensor_id, temperature
FROM sensor_data
WHERE ts = '2025-06-01T12:00:00Z';
时间列是时序表的主键组成部分,因此时间范围过滤总是能利用主键索引。建议在查询中始终包含时间范围条件,避免全表扫描。
组合查询:标签 + 时间 + 值过滤
在实际应用中,查询条件通常是多维度的。SonnetDB 允许在 WHERE 子句中自由组合各种条件:
-- 综合过滤条件
SELECT ts, sensor_id, temperature, humidity
FROM sensor_data
WHERE sensor_id = 'sensor-001'
AND ts >= '2025-06-01T00:00:00Z'
AND ts < '2025-06-02T00:00:00Z'
AND temperature > 30.0
ORDER BY ts;
这个查询同时使用了标签过滤(sensor_id)、时间范围(ts)和值过滤(temperature > 30.0)。SonnetDB 的查询优化器会选择最佳的索引组合来执行。
ORDER BY 和 LIMIT
时序查询通常需要按时间排序,并使用 LIMIT 控制返回行数:
-- 查询最近的 50 条记录
SELECT ts, sensor_id, temperature
FROM sensor_data
WHERE sensor_id = 'sensor-001'
ORDER BY ts DESC
LIMIT 50;
ORDER BY ts DESC按时间降序排列,是最常见的时序查询模式ORDER BY ts ASC按时间升序,适合查看历史数据LIMIT n限制返回行数,避免结果集过大
掌握这些基本的 SELECT 操作,你就可以在 SonnetDB 中高效地查询时序数据了。后续文章将介绍聚合、窗口函数和更高级的查询技巧。

浙公网安备 33010602011771号