1

我是使用firebird的新手。我有 3 张桌子。

对于T_TABLE1,结构如下所示:

在此处输入图像描述

对于T_TABLE2,结构如下所示:

在此处输入图像描述

对于T_TABLE3的结构是这样的:

在此处输入图像描述

主键是T_TABLE1TBL1_IDT_TABLE2TBL1_IDT_TABLE3ID。如何选择与这 3 个表的数据连接,我想使用索引进行最佳选择查询,但我不知道如何创建索引,因为我是使用 firebird 的新手,我想了解更多使用 firebird 的知识。希望我的解释清楚。

4

1 回答 1

4

创建索引的语法记录在 Firebird 2.5 语言参考CREATE INDEX中,它还包含其他信息。

创建索引的语法是:

CREATE [UNIQUE] [ASC[ENDING] | [DESC[ENDING]] INDEX indexname
   ON tablename
   { (<col> [, <col> ...]) | COMPUTED BY (expression) }

<col>  ::=  a column not of type ARRAY, BLOB or COMPUTED BY

因此,要在您身上创建(升序)索引,T_TABEL2.TBL1_ID请执行以下操作:

CREATE INDEX ix_tabel2_tbl1_id ON T_TABEL2 (TBL1_ID)

但正如我今天早些时候评论的那样,如果此列上有外键,则没有必要,因为 Firebird 中的外键会自动获取索引(这同样适用于主键)。

从您的问题中不清楚您是否有外键,但我建议您创建它们而不是索引:它为您提供索引,并且最重要的是TBL1_ID强制T_TABLE1.

请记住,创建索引不会自动提高性能。例如,优化器可能会认为使用索引不值得努力(或者特定索引与查询无关)。

于 2013-10-07T19:02:08.610 回答