我在 memsql 和 mysql 中运行了以下查询,但它所花费的时间完全不同。
内存sql
select count(*) from po A , cu B , tsk C where A.customer_id = B.customer_id and B.taskid = C.id and A.domain = 5 and week(B.post_date) = 22;
+----------+
| count(*) |
+----------+
| 98952 |
+----------+
1 row in set (19.89 sec)
mysql
select count(*) from po A , cu B , tsk C where A.customer_id = B.customer_id and B.taskid = C.id and A.domain = 5 and week(B.post_date) = 22;
+----------+
| count(*) |
+----------+
| 98952 |
+----------+
1 row in set (0.50 sec)
为什么在 mysql 这么快的情况下 memsql 的性能如此糟糕?
mysql 和 memsql 都在同一个 8GB 的四核机器上。memsql 有 1 个主聚合器节点和 3 个叶节点。
如果有连接,memsql 的性能会很差吗?
更新
从文档中可以清楚地看出,表应该在预期经常加入的列上有一个分片键。这允许优化器在查询执行期间最小化网络流量。
所以我认为我错了。我没有使用分片键,而是在表上添加了一个简单的主键。