Firebird 1.5:表中的列重复

时间:2013-05-08 02:47:36

标签: firebird firebird1.5

我注意到Firebird为单个表创建了重复的列,因此在查询中使用了错误的索引,导致查询速度变慢。请举例如下。

我有2个具有相同列和索引的表,但在检查表结构时,一个表显示重复的列

Table A : Name VARCHAR(30)
          Age  INTEGER
          BIRTH_DATE TIMESTAMP

          Indices : Name, Birth_date (Asc), Birth_date(Desc)

Table B : Name VARCHAR(30)
          Age  INTEGER
          BIRTH_DATE TIMESTAMP   
          Name VARCHAR(30)
          Age  INTEGER
          BIRTH_DATE TIMESTAMP   

          Indices : Name, Birth_date (Asc), Birth_date(Desc)

当使用表C加入表并按Birth_date排序时,表A使用的是Birth_date索引Ordered,但表B不是。

请帮忙!这背后的原因是什么?谢谢。

1 个答案:

答案 0 :(得分:1)

我刚遇到一个问题,即允许创建重复列。这个请求

SELECT a.RDB$FIELD_NAME
FROM RDB$RELATION_FIELDS a
WHERE a.RDB$FIELD_NAME like '%COLUMN_NAME%'

显示了两个COLUMN_NAME行。通过复制粘贴其他地方的字段,很明显一列有尾随空格,而另一列有回车符+换行符(CRLF),然后是尾随空格。

FlameRobin向导用于创建列。我对它的看法是使用了复制粘贴并插入了CRLF。 Excel和其他软件可以为您做到这一点。尽管如此,FlameRobin,FlameRobin的驱动程序和FireBird都应该防范它。

我们通过制作一些在列名中包含违规CRLF的DDL来删除违规列。