存储列车时刻表MYSQL中的日期

存储列车时刻表MYSQL中的日期,mysql,database-design,relational-database,schedule,Mysql,Database Design,Relational Database,Schedule,我已经在MYSQL中创建了一个列车时刻表数据库。每天有几千条路线。但除了少数例外,大多数路线在每个工作日都是相似的,但在周末会有所不同 此时,我基本上每天午夜更新我的SQL表,以获得接下来24小时的发车时间。然而,这是非常不方便的。所以我需要一种在我的表格中存储日期的方法,这样我就不必每天都这样做了 我试图创建一个单独的表,在其中存储每个routenumber的日期(routenumber每天都会重置),但这使得我的查询速度太慢,无法使用。这是否意味着我必须将出发和到达时间存储为datetime

我已经在MYSQL中创建了一个列车时刻表数据库。每天有几千条路线。但除了少数例外,大多数路线在每个工作日都是相似的,但在周末会有所不同

此时,我基本上每天午夜更新我的SQL表,以获得接下来24小时的发车时间。然而,这是非常不方便的。所以我需要一种在我的表格中存储日期的方法,这样我就不必每天都这样做了

我试图创建一个单独的表,在其中存储每个routenumber的日期(routenumber每天都会重置),但这使得我的查询速度太慢,无法使用。这是否意味着我必须将出发和到达时间存储为datetime?在这种情况下,包含routes的主表将有数百万个条目

还是有别的办法

我的routetable如下所示:

StnCode (referenced in seperate Station table) DepTime ArrTime Routenumber legNumber StnCode(在单独的站点表中引用) 戴普泰姆 到达时间 路由器 腿数
你是如何储存日期的?单个日期/时间字段?这无疑是最紧凑的表示,但也是最难索引和扫描的,尤其是在执行以下类型的查询时:

SELECT ...
WHERE MONTH(DepTime) = 4 AND DAY(DepTime) = 19;

这样的构造需要一个完整的表扫描来分离每个日期字段并提取月/日。对于这种情况,最好将datetime进行一点去符号化,并将其拆分为单独的年/月/日/小时/分钟字段,并在这些字段上放置索引。维护起来有点麻烦,但也会大大加快特定时间段的查询速度。

您是如何存储日期的?单个日期/时间字段?这无疑是最紧凑的表示,但也是最难索引和扫描的,尤其是在执行以下类型的查询时:

SELECT ...
WHERE MONTH(DepTime) = 4 AND DAY(DepTime) = 19;
这样的构造需要一个完整的表扫描来分离每个日期字段并提取月/日。对于这种情况,最好将datetime进行一点去符号化,并将其拆分为单独的年/月/日/小时/分钟字段,并在这些字段上放置索引。维护起来有点麻烦,但也会大大加快特定时间段的查询速度

  • 您可以根据日期(太阳、周一、周二等)存储日程安排,而不是按日期存储日程安排。这将避免存储路由的日期。您可以将路由视为预先确定的,因此它们是固定的。由于列车数量约为8000列(客运列车),天数固定(7天),因此路线为(50-1000),如铁路书籍所示,每个表如1、1A所示,
    这将避免将大量列车时刻表组合存储到数据库中,因为每个日期都转换为一个工作日,我们不会丢失任何数据。

  • 您可以创建一个存储天数的表,该表最多有7天

  • 我建议以这样一种方式对数据库建模,即每个站点都是一个接触点,而不是站点id

  • 您可以在设计中引入枢纽概念,以确定同一城市的3-4个车站

  • 每个车站都是一个接触点,由诸如登机点、停车点等设施支持

  • 因为不是所有的车站都是所有列车的登机点

  • 设施是指在不同车站可用的设施

  • 并非所有列车都能使用所有设施。。。, Kazipet是一个车站,也是一个交叉点……但对于少数几列火车,在少数几条路线上, 他们经过车站,也会在车站停下来,但不允许新乘客在车站上车。 但是,它将允许同样的反向路线

  • 您可以根据日期(太阳、周一、周二等)存储日程安排,而不是按日期存储日程安排。这将避免存储路由的日期。您可以将路由视为预先确定的,因此它们是固定的。由于列车数量约为8000列(客运列车),天数固定(7天),因此路线为(50-1000),如铁路书籍所示,每个表如1、1A所示,
    这将避免将大量列车时刻表组合存储到数据库中,因为每个日期都转换为一个工作日,我们不会丢失任何数据。

  • 您可以创建一个存储天数的表,该表最多有7天

  • 我建议以这样一种方式对数据库建模,即每个站点都是一个接触点,而不是站点id

  • 您可以在设计中引入枢纽概念,以确定同一城市的3-4个车站

  • 每个车站都是一个接触点,由诸如登机点、停车点等设施支持

  • 因为不是所有的车站都是所有列车的登机点

  • 设施是指在不同车站可用的设施

  • 并非所有列车都能使用所有设施。。。, Kazipet是一个车站,也是一个交叉点……但对于少数几列火车,在少数几条路线上, 他们经过车站,也会在车站停下来,但不允许新乘客在车站上车。 但是,它将允许同样的反向路线


  • 查询具有100万行的表应该不会太慢,除非您缺少索引或编写查询时无法使用索引。但是如果我每天需要单独的条目,则会有几百万个条目。一天包含234000个条目,为便于搜索,数据库应包含未来3个月的所有路线。所以我需要有2100万个条目。这也会使数据库很难编辑,因为它的大小。查询一个有100万行的表应该不会太慢,除非您缺少索引或编写查询时无法使用索引。但是如果我每天都需要单独的条目,那么就有几百万个条目。一天包含23400个