gpt4 book ai didi

Liquibase createIndex 列顺序

转载 作者:行者123 更新时间:2023-12-03 21:29:23 25 4
gpt4 key购买 nike

我正在尝试将 Liquibase 用于我们的项目。我们主要使用 Oracle 数据库,其他一些数据库较少使用。我试图弄清楚如何在索引的情况下指定列顺序。下面是一个典型的创建索引更改集。

<createIndex indexName="PK_xxxxxxx" tableName="xxxxx" unique="true">
<column name="column_1"/>
<column name="column_2"/>
<column name="column_3"/>
</createIndex>

在性能和应用程序可扩展性方面,索引中的列顺序非常重要。如果有办法在创建索引时指定相同的内容,请指导我吗?

PS:根据列标签文档,属性 afterColumn , position存在并且它们仅适用于我假设的创建表。以下是文档对此的说明。

If used in an 'addColumn' command, this attribute allows you to control where in the table column order the new column goes. Only one of beforeColumn, afterColumn or position are allowed. Since 3.1

最佳答案

Liquibase 将使用 createIndex 中列出的列顺序。标签 - 非常像 DBMS 使用 create index 中指定的顺序陈述。

以下变更集:

<changeSet author="arthur" id="1">
<createTable tableName="foo">
<column name="col_1" type="integer"/>
<column name="col_2" type="integer"/>
<column name="col_3" type="integer"/>
</createTable>
<createIndex indexName="ix_one" tableName="foo">
<column name="col_1"/>
<column name="col_2"/>
<column name="col_3"/>
</createIndex>
<createIndex indexName="ix_two" tableName="foo">
<column name="col_3"/>
<column name="col_2"/>
<column name="col_1"/>
</createIndex>
<createIndex indexName="ix_three" tableName="foo">
<column name="col_2"/>
<column name="col_3"/>
<column name="col_1"/>
</createIndex>
</changeSet>

将产生以下语句(例如,使用 updateSQL 运行时):
CREATE TABLE public.foo (col_1 INT, col_2 INT, col_3 INT);

CREATE INDEX ix_one ON public.foo(col_1, col_2, col_3);

CREATE INDEX ix_two ON public.foo(col_3, col_2, col_1);

CREATE INDEX ix_three ON public.foo(col_2, col_3, col_1);

关于Liquibase createIndex 列顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40676719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com