【发布时间】:2019-02-10 23:01:57
【问题描述】:
我有一个大表(大约 300 万条记录),主要包括以下字段:rowID (int)、deviceID (varchar(20))、格式如 1536169459 (int(10)) 的 UnixTimestamp、powerLevel具有介于 30 和 90 之间的整数 (smallint(6))。
我希望在特定时间范围内(使用 UnixTimestamp)提取特定设备 ID 且 powerLevel 高于特定数字的记录。拥有超过 300 万条记录,这需要一段时间。有没有办法创建一个可以为此优化的索引?
【问题讨论】:
-
使用时间戳、deviceID 和 powerLevel 的复合索引
-
您可能会喜欢我的演示文稿How to Design Indexes, Really 或视频:youtube.com/watch?v=ELR7-RdU9XU
-
日期时间或时间戳是应用索引的最佳候选者。 IMO,仅在 UnixTimeStamp 上应用索引将提高性能。如果它不能解决您的问题,那么您还可以检查是否可以改进您的查询。
-
欢迎来到 Stack Overflow。供将来参考,请read this note about asking good SQL questions。
标签: mysql database optimization indexing