重复插入语法以提高矢量效率 - 任何示例



我需要加快插入Ingress VectorWise数据库的速度,文档显示了这一点:

http://docs.actian.com/ingres-vectorwise/2.5/sql-language-guide/5315-insert

The INSERT statement inserts rows into a table.
This statement has the following format:
[REPEATED]]INSERT INTO [schema.]table_name
    [(column {, column})]
    [OVERRIDING SYSTEM VALUE | OVERRIDING USER VALUE]
    [VALUES (expr{, expr}) {,(expr{ ,expr})} |
    [WITH common_table_expression] subselect];

并说:

重复:保存插入的执行计划,它可以使 后续执行速度更快。

我一生都

无法使用"REPEATED"获得查询以成功执行,并且我无法在线找到任何使用直接SQL的示例。 有没有人对如何让它在语法上工作有任何建议?

@w00te : 忽略重复。如果多插入性能至关重要,我宁愿做一些更"激进"的事情。- 我会创建一个临时堆表(在插入时它们是最快的存储类型),一旦我完成了插入一堆(可以是数百万行)的行,那么我只需将表修改为 VECTORWISE 或从中选择到vectorwise表中。如果您只是选择,那么该表可能不必是临时的,它可以是临时存储数据的普通表。取决于用例。

在插入上述堆表时,如果可能,请使用批处理(Ingres JDBC>= 4.0.1),它可以显着提高插入数百万行的速度(我知道这是事实 - 我做了很少的测试)。

编辑:显然,这不适用于VectorWise。最好的方法是直接插入到 VectorWise 表中,最好是非索引的。使用 JDBC 预准备语句和批处理执行,你会没事的。格兰特使用CACHE_DYNAMIC的建议也应该被考虑。

我不确定 Vectorwise 是否支持它,Ingres 支持,但你可能想看看使用 CACHE_DYNAMIC .有关详细信息,请参阅 http://docs.actian.com/ingres/10s/upgrade-guide/2038-cached-dynamic-cursor-query-plans。

相关内容

  • 没有找到相关文章

最新更新