首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用长列表查询Sqlx

用长列表查询Sqlx
EN

Stack Overflow用户
提问于 2017-02-17 06:43:23
回答 2查看 651关注 0票数 0

我使用sqlx在Go代码中执行查询。这个查询有一个很长的值列表(~10,000),我需要在WHERE in (?)条款。这导致业绩大幅放缓。如何优化这样的查询?而且,这个查询是在Redshift集群上执行的,所以索引列不是提高查询性能的解决方案。

代码语言:javascript
复制
values := []int64{143, 123, 123, 542....} // ~10,000 elements
query, args, err := sqlx.In(query, values)
if err != nil {
    return nil, err
}

query = dbInterface.Rebind(query)   
err = dbInterface.Select(&list, query, args...)

查询:

代码语言:javascript
复制
SELECT * FROM table_name WHERE some_id IN (?) ORDER BY created_at;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-20 06:31:41

我最终为I创建了一个临时表,并执行了一个连接。这大大提高了查询性能。

票数 0
EN

Stack Overflow用户

发布于 2017-02-17 19:23:19

您需要让sqlx生成以下其中之一:

  • values语法: 其中some_id在(值(143),(123))
  • 加入一个数组: 从t内连接unnest(array143,123) u (id)在u.id = t.id上选择*
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42291085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档