我是使用火鸟的新手。我有3张桌子。
对于 T_TABLE1 ,结构如下所示:
对于 T_TABLE2 ,结构如下所示:
对于 T_TABLE3 ,结构如下:
主键是 T_TABLE1 中的 ID , T_TABEL2 中的 TBL1_ID 和 TBL1_ID 在 T_TABLE3 。如何选择与3个表的数据连接,我想使用索引进行最佳选择查询,但我不知道如何创建索引,因为我是使用firebird的新手,我想了解更多在使用火鸟。希望我的解释清楚。
答案 0 :(得分:3)
“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
中。
请记住,创建索引不会自动提高性能。例如,优化器可能会决定使用索引是不值得的(或者特定索引与查询无关)。