[英]Mysql table optimization for better performance
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 字符串。
任何人都可以建议我们是否有其他方法来解决这个不断增长的表格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.