CREATE TABLE Car (
`id` bigint(30) NOT NULL,
`name` varchar(40) COLLATE utf8_unicode_ci NOT NULL
)
CREATE TABLE Checkpoints (
`id` bigint(30) NOT NULL AUTO_INCREMENT,
`car_id` int(11) NOT NULL,
`check_point_name` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
`expected_time` datetime DEFAULT NULL,
`actual_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_car_id` (`car_id`),
KEY `car` (`check_point_name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
mysql> select * from car;
+----+---------+
| id | name |
+----+---------+
| 1 | Ferrari |
+----+---------+
mysql> select * from Checkpoints;
+----+--------+------------------+---------------------+---------------------+
| id | car_id | check_point_name | expected_time | actual_time |
+----+--------+------------------+---------------------+---------------------+
| 1 | 1 | Point1 | 2021-02-01 15:00:00 | 2021-02-15 15:01:00 |
| 2 | 1 | Point2 | 2021-02-01 15:20:00 | 2021-02-01 15:23:19 |
| 3 | 1 | Point3 | 2021-02-01 15:30:00 | 2021-02-01 15:32:19 |
| 4 | 1 | Point4 | 2021-02-01 15:40:00 | 2021-02-01 15:40:19 |
| 5 | 1 | Point5 | 2021-02-01 15:50:00 | 2021-02-01 15:50:19 |
| 6 | 1 | Point5 | 2021-02-01 15:50:00 | 2021-02-01 15:50:00 |
+----+--------+------------------+---------------------+---------------------+
当前 mysql 版本:5.6.44
每辆车都会有多个检查点及其预计到达时间和实际到达时间。我面临的问题 track_car 表不断增长为巨大的表,这导致查询速度缓慢并导致 mysql 性能下降(上面是我能想出的最好的例子来解释这个问题:))。
为了优化这个表,考虑将 track_car 数据移动到 JSON/Text 单行,其中包含所有这些值的 JSON 字符串。
任何人都可以建议我们是否有其他方法来解决这个不断增长的表格。