我正在使用google sql cloud(mysql 5.5w/4gb ram)合并两个数据集,每个数据集有大约100万行,运行时间超过5小时。我从Sequel Pro运行以下查询:
create table newtable as (select * from table1 t1 left join table2 t2 using (key))
每个表大约有20个varchar列。密钥也是varchar。
我已经在两个表中的键上创建了索引,但这并没有真正改变性能。我已经搜索了很多,但是找不到任何关于如何提高查询时间的直接建议。这是mysql的预期查询时间吗?
编辑:每张表~250MB
最佳答案
我注意到的第一件事是你的密钥被设置为varchar。这可能是导致你目前表现不佳的一个主要原因。这可以通过添加一个自动递增的整数主键来改进。由于“table1”中的一百万个键值中的每一个字符串与“table2”中的一百万个键值中的每一个单独进行比较,因此这是一项非常高性能的任务,通过比较每个字符串中的每一个字符更是如此。由于使用整数是一种简单的值对值比较,因此它的影响要小得多。
由于实例的物理硬件限制,云sql实例的层大小也会对性能产生很大影响。您可以临时更改实例的层,以便在云SQL用户界面的“编辑”部分或使用Cloud SDK对其进行测试。
关于mysql - 如何提高MySQL查询时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29681612/