存储列车时刻表MYSQL中的日期
我已经在MYSQL中创建了一个列车时刻表数据库。每天有几千条路线。但除了少数例外,大多数路线在每个工作日都是相似的,但在周末会有所不同 此时,我基本上每天午夜更新我的SQL表,以获得接下来24小时的发车时间。然而,这是非常不方便的。所以我需要一种在我的表格中存储日期的方法,这样我就不必每天都这样做了 我试图创建一个单独的表,在其中存储每个routenumber的日期(routenumber每天都会重置),但这使得我的查询速度太慢,无法使用。这是否意味着我必须将出发和到达时间存储为datetime?在这种情况下,包含routes的主表将有数百万个条目 还是有别的办法 我的routetable如下所示: StnCode (referenced in seperate Station table) DepTime ArrTime Routenumber legNumber StnCode(在单独的站点表中引用) 戴普泰姆 到达时间 路由器 腿数存储列车时刻表MYSQL中的日期,mysql,database-design,relational-database,schedule,Mysql,Database Design,Relational Database,Schedule,我已经在MYSQL中创建了一个列车时刻表数据库。每天有几千条路线。但除了少数例外,大多数路线在每个工作日都是相似的,但在周末会有所不同 此时,我基本上每天午夜更新我的SQL表,以获得接下来24小时的发车时间。然而,这是非常不方便的。所以我需要一种在我的表格中存储日期的方法,这样我就不必每天都这样做了 我试图创建一个单独的表,在其中存储每个routenumber的日期(routenumber每天都会重置),但这使得我的查询速度太慢,无法使用。这是否意味着我必须将出发和到达时间存储为datetime
你是如何储存日期的?单个日期/时间字段?这无疑是最紧凑的表示,但也是最难索引和扫描的,尤其是在执行以下类型的查询时:
SELECT ...
WHERE MONTH(DepTime) = 4 AND DAY(DepTime) = 19;
这样的构造需要一个完整的表扫描来分离每个日期字段并提取月/日。对于这种情况,最好将datetime进行一点去符号化,并将其拆分为单独的年/月/日/小时/分钟字段,并在这些字段上放置索引。维护起来有点麻烦,但也会大大加快特定时间段的查询速度。您是如何存储日期的?单个日期/时间字段?这无疑是最紧凑的表示,但也是最难索引和扫描的,尤其是在执行以下类型的查询时:
SELECT ...
WHERE MONTH(DepTime) = 4 AND DAY(DepTime) = 19;
这样的构造需要一个完整的表扫描来分离每个日期字段并提取月/日。对于这种情况,最好将datetime进行一点去符号化,并将其拆分为单独的年/月/日/小时/分钟字段,并在这些字段上放置索引。维护起来有点麻烦,但也会大大加快特定时间段的查询速度
这将避免将大量列车时刻表组合存储到数据库中,因为每个日期都转换为一个工作日,我们不会丢失任何数据。
这将避免将大量列车时刻表组合存储到数据库中,因为每个日期都转换为一个工作日,我们不会丢失任何数据。
查询具有100万行的表应该不会太慢,除非您缺少索引或编写查询时无法使用索引。但是如果我每天需要单独的条目,则会有几百万个条目。一天包含234000个条目,为便于搜索,数据库应包含未来3个月的所有路线。所以我需要有2100万个条目。这也会使数据库很难编辑,因为它的大小。查询一个有100万行的表应该不会太慢,除非您缺少索引或编写查询时无法使用索引。但是如果我每天都需要单独的条目,那么就有几百万个条目。一天包含23400个