mysql - 提高 MySQL 中 JOIN 的速度

标签 mysql performance

我知道周围有类似的线程,但这真的是我第一次意识到查询速度可能会影响我 - 所以我真的不容易从其他人那里转移问题。

话虽这么说,我已经成功地使用了较小数据的以下查询,但如果我将它用于稍微大一点的表(大约 120,000 条记录)。我等了几个小时。

  INSERT INTO anothertable
  (id,someint1,someint1,somevarchar1,somevarchar1)
  SELECT DISTINCT md.id,md.someint1,md.someint1,md.somevarchar1,pd.somevarchar1
  FROM table1 AS md
  JOIN table2 AS pd
  ON (md.id = pd.id);

表 1 和表 2 包含大约 120,000 条记录。该查询现在已经运行了将近 2 个小时。这是正常的吗?我只需要等待吗?我真的不知道,但我很确定有人可以做得更好,因为这是我的第一次尝试。

我阅读了有关索引的内容,但还不知道在我的情况下要索引什么?

感谢您的任何建议 - 请随时将我指向非常初学者的指南!

最佳答案

假设 id 是一个自动递增的 PK,DISTINCT 是无用的,因为每一行都是唯一的。在这种情况下,删除它也应该会提高性能,因为 SELECT DISTINCT 可能会非常慢。

并且如前所述,确保 id 字段在两个表上都有索引(如果它是 PK,它就会这样做)。

关于mysql - 提高 MySQL 中 JOIN 的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3052009/

相关文章:

mysql - 查找MySQL中的重复记录2

mysql - MySQL在哪里存储数据库文件?

python - 如何使用指针在 Numba 中包装 CFFI 函数

java - 无法从 SQL 执行中正确获取 ResultSet

mysql 编译器。使用 with 并插入它会提示语法错误

mysql - 在使用 'OR' 时不使用索引键

performance - 通过移动网络的 HTTP/2 浏览器请求一次往返有多少字节?

ios - session 重启后 AVcapture session 启动缓慢

php - 警告mysql_fetch_array,但显示值

iphone - 使用自定义 NSEntityMigrationPolicy 进行核心数据迁移 - 效率?