mysql - 两个表匹配的 SQL 查询速度更快

标签 mysql sql

我有两个表正在尝试使用以下查询执行匹配:

select * from task1,task2
where task1.From_Number=task2.To_Number
and task1.Start_Time<task2.Start_Time;

它最终会起作用,但需要很长时间。这些表有 33 列,其中一个表大约有 45k 行,其他表有 500k 行。各个列中都有重复项,并且没有列是唯一的,因此没有主键。这些表格是从电子表格导入的。

有一堆电话通话记录,如上所述,每列中有几个重复项。我该怎么做才能让这个查询运行得更快?我只匹配几列,但需要打印所有列并将结果输出到 csv 中。

最佳答案

您能做的最好的事情就是在两个表的两列上创建一个非唯一索引。

阅读MySQL documentation on creating an index .

类似于:

create index task1_idx
on     task1
( From_Number
, Start_Time
)

还有:

create index task2_idx
on     task2
( To_Number
, Start_Time
)

关于mysql - 两个表匹配的 SQL 查询速度更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25212899/

相关文章:

php - 循环逻辑 PHP 出错

php - 在 PDO 中使用 INSERT INTO ON DUPLICATE KEY 绑定(bind)值

mysql - 更新表,然后删除行(如果未设置)

sql - 部分字符串匹配 SQL - 内连接

sql - Apache derby-SELECT * FROM表名不起作用

mysql - 如何向具有重复值的表添加主键?

由于 "Cannot add or update a child row: foreign key constraint fails",MySQL .cs​​v 加载失败

mysql - 在Mysql中将数字转换为单词

mysql - Fast MAX, GROUP BY 多列拼接

mysql - 用于 SQL 查询的单引号 R