繁体   English   中英

Mysql 表优化以获得更好的性能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM