2013-05-08 2 views
1

Я заметил, что Firebird создает повторяющиеся столбцы для одной таблицы, поэтому в запросе используются неверные индексы, которые вызывают медленный запрос. Пример ниже.Firebird 1.5: повторяющиеся столбцы в таблице

У меня 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) 

При вступлении в таблицу с таблицей С и порядка по Birth_date, таблица А, используя индекс Birth_date Упорядочено, но таблица B не указана.

Пожалуйста, помогите! в чем причина этого? Спасибо.

+1

Каков фактический DDL таблицы? Невозможно создать два столбца с одинаковым именем (и case). –

+0

@MarkRotteveel, yup, невозможно создать два столбца с одинаковым именем в одной таблице, но вы можете создавать одинаковые столбцы в разных таблицах, проблема в том, что две таблицы с одинаковыми столбцами, одна из которых будет иметь повторяющиеся столбцы когда я рассматриваю DDL в белке (IDE для Firebird). – Ianthe

+0

Это также может быть ошибкой в ​​запросе метаданных в Jaybird, вы можете создать билет на http://tracker.firebirdsql.org/browse/JDBC, описывающий проблему, шаги воспроизведения, фактический DDL и копию (или резервное копирование) база данных? –

ответ

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 должны защищать от этого.

Мы опустили столбец оскорбления, создав некоторый DDL, у которого был оскорбительный CRLF в имени столбца.