1

我注意到 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 不是。

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

4

1 回答 1

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 来删除有问题的列。

于 2015-04-14T10:28:26.133 回答