【发布时间】:2016-11-26 05:11:33
【问题描述】:
目前,我正在尝试通过 MySQL 工作台从 2 个不同数据库架构中的三个不同表运行特定查询,但我无法实现。
我目前在数据库架构中有一个 track 和 completed 表,在不同的服务器中有一个 location 表数据库。
track表收集待办事项的开始和结束。completed表保存结果location数据库用于获取待办事项的创建和完成位置。
跟踪
+----+----------+---------------+---------------------+
| tid | user_id | function_name | track_time |
+-----+---------+---------------+---------------------+
| 1 | des | create | 2015-02-29 1 pm |
| 2 | des | complete | 2015-02-29 2 pm |
| 3 | greg | create | 2015-02-29 3 pm |
| 4 | greg | complete | 2015-02-29 4 pm |
+-----+---------+---------------+---------------------+
完成
+-----+------+---------------------+
| tid | uid | insert_time |
+-----+------+---------------------+
| 1 | des | 2015-02-29 1 pm |
| 2 | des | 2015-02-29 2 pm |
| 3 | greg | 2015-02-29 3 pm |
| 4 | greg | 2015-02-29 4 pm |
+-----+------+---------------------+
位置
+----+----------+---------------+----------+
| tid | user_id | action | location |
+-----+---------+---------------+----------+
| 1 | des | create | subways |
| 2 | des | complete | home |
| 3 | greg | create | home |
| 4 | greg | complete | market |
+-----+---------+---------------+----------+
我能够从以下同一数据库架构中的两个表中获取连接结果:
查询结果
+-----+---------+---------------+-----------------+-----+------+---------------+
| tid | user_id | function_name | track_time | tid | uid | insert_time |
+-----+---------+---------------+-----------------+-----+------+---------------+
| 2 | des | complete | 2015-02-29 1 pm | 2 | des | 15-02-29 2 pm |
| 4 | greg | complete | 2015-02-29 3 pm | 4 | greg | 15-02-29 4 pm |
+-----+---------+---------------+-----------------+-----+------+---------------+
select * from
svr1.tracking t,
svr1.completed c
where
t.user_id = c.uid
and t.tid = c.tid
and t.function_name = 'create'
and t.track_time > '2015-02-29 00:00:00'
and t.track_time < '2015-02-29 23:59:59'
但是,我的查询中还需要 location 信息,但是一天的位置表有 1.5 亿条记录,并且由于我的 mac 的 16gb ram 用完,即使它们被索引,它也需要很长时间才能运行。
我要求输出有
user_id,
create tid,
function_name,
track_time,
create location,
complete tid,
function_name,
track_time,
location
这会给我如下输出:
des, 1, create, 2015-02-29 1 pm, subways, 2,complete, 2015-02-29 2 pm, home
用户信息
在位置 ID 是用户设备的哈希 MAC 地址,我想找出每个特定用户的跟踪时间和位置记录时间。
我想知道要编写什么最好的脚本来实现它,因为在工作台上运行对我不起作用。
感谢您的阅读,非常感谢任何 cmets!
【问题讨论】:
-
你有索引吗?
-
@Sane 是的,它们是索引
-
能否请您从您的表中发布 show create table xxx 以查看是否确实存在正确的复合索引。
-
(1) 表格设计没有任何意义。 (2) 请提供您尝试运行的查询(包括
location) -
@DuduMarkovitz 我没有设法获得位置结果查询,不知道该怎么做。我可以通过 track 和 result 得到结果...
标签: mysql sql database mysql-workbench