gpt4 book ai didi

mysql - 用于从多个大表中创建新表的 sql 语法

转载 作者:行者123 更新时间:2023-11-29 06:57:46 24 4
gpt4 key购买 nike

我是 MySql 和 sql 的新手。我不知道如何执行以下操作:

我有一个包含四个相关的公交时刻表数据库:

stops (24,403 rows)
-------------------
stop_id int(11)


stopTimes (12,073,459 rows)
---------------------------
trip_id varchar(30)
stop_sequence int(11) // running sequence within the trip: 1-last
stop_id int(11)

trips (320,395 rows)
---------------------------
trip_id varchar(30)
route_id int(11)


routes (9,748 rows)
---------------------------
route_id int(11)
agency_id int(11)
route_short_name varchar(10)

关系

  • 行程路线:一对多
  • 停止时间的行程:一对多
  • 停止次数:一对一

在这些表中,我想创建一个包含以下字段的新表“routeStops”:

routeStops (~100,000 rows)
---------------------------
route_id int(11)
agency_id int(11)
route_short_name varchar(10)
stop_id int(11)

它与停靠点之间存在一对多关系。

是否有可以执行该操作的SQL 查询

我应该为 route_idstop_id 添加索引以优化性能吗?我应该为 trip_id 添加全文索引吗?

我是新手,希望能提供一些见解。

我正在使用 PHPMyAdmin 和一个相当新的 XAMPP 安装。

谢谢,

最佳答案

是否有可以执行该操作的 SQL 查询?

您可以使用 INSERT ... SELECT 来实现它语法:

INSERT INTO routeStops (route_id, agency_id, route_short_name, stop_id)
SELECT DISTINCT r.route_id, r.agency_id, r.route_short_name, s.stop_id
FROM routes r
JOIN trips t ON r.route_id = t.route_id
JOIN stopTimes s ON t.trip_id = s.trip_id;

是否应该为 route_id 和 stop_id 添加索引以优化性能?

那些应该是他们表中的主键,以及其他表中的外键。

我应该为 trip_id 添加全文索引吗?

我不推荐它,因为它太慢了。我建议您更改表格并为 trip_id 使用 int:

CREATE TABLE trips (
trip_id int(10) unsigned NOT NULL,
trip_id_old varchar(30) DEFAULT NULL,
route_id int(11) DEFAULT NULL,
PRIMARY KEY (trip_id)
)

关于mysql - 用于从多个大表中创建新表的 sql 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11694931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com