MST

星途 面试题库

面试题:MariaDB如何实现高精度时间的存储与检索

假设你正在设计一个需要高精度时间戳(纳秒级精度)存储和快速检索的数据库表结构,在MariaDB环境下,说明你会如何设计表结构,使用什么数据类型,以及怎样创建索引来支持高效的时间范围查询。
17.5万 热度难度
数据库MariaDB

知识考点

AI 面试

面试题答案

一键面试
  1. 表结构设计
    • 假设表名为high_precision_timestamps,除了时间戳字段外,还可以有一个自增主键字段id(如果业务需要唯一标识每一条记录)。
    CREATE TABLE high_precision_timestamps (
        id INT AUTO_INCREMENT PRIMARY KEY,
        timestamp_ns BIGINT NOT NULL
    );
    
  2. 数据类型选择
    • BIGINT用于存储纳秒级精度的时间戳。因为纳秒级时间戳数值较大,BIGINT(8字节,可表示范围 -9223372036854775808 到 9223372036854775807)能够满足存储需求。
  3. 索引创建
    • 为了支持高效的时间范围查询,在timestamp_ns字段上创建索引。
    CREATE INDEX idx_timestamp_ns ON high_precision_timestamps (timestamp_ns);
    
    • 如果经常按时间范围查询的同时还会关联其他条件,可能需要考虑创建复合索引。例如,如果还会按某个业务类型字段business_type查询,可以创建如下复合索引:
    CREATE INDEX idx_timestamp_business_type ON high_precision_timestamps (timestamp_ns, business_type);
    
    复合索引的顺序很重要,最常用的查询条件字段放在前面,这里时间范围查询更频繁,所以timestamp_ns在前。