0

在对以下查询进行基准测试时:

SELECT * from test order by c0 asc limit 1

在十个测试中,我们得到:

Took: 7877 ms. (7.877 s)
Took: 15617 ms. (15.617 s)
Took: 8067 ms. (8.067 s)
Took: 15924 ms. (15.924 s)
Took: 8057 ms. (8.057 s)
Took: 15864 ms. (15.864 s)
Took: 15455 ms. (15.455 s)
Took: 15245 ms. (15.245 s)
Took: 7857 ms. (7.857 s)
Took: 15624 ms. (15.624 s)

c0是一个文本字段。为什么这个查询这么慢?有没有办法解决这个问题或解决这个问题,以便查询——在任何其他数据库中需要 0.1 秒——可以接受?

4

1 回答 1

1

表中有多少行?c0 的基数是多少。是否可以访问您的基准测试详细信息和数据。

MapD 没有索引,因此使用这样表达的 sql,排序完全针对 c0 列执行,我们没有针对这种特定样式的查询计划进行优化。

要为您的查询获得更高性能的结果,请尝试按如下方式重写它

select * from test where c0 in (select c0 from test group by c0 order by c0 asc limit 1) limit 1;

有点啰嗦,但我希望你能找到更好的表现。

使用在线 400m Twitter 数据集,以下查询在 100ms 左右返回

select * from tweets_new where county_state in (select county_state from tweets_new group by county_state order by county_state asc limit 1) limit 1;

于 2017-09-29T14:36:09.233 回答