Добрый день!
Наблюдал сейчас забавное поведение сервера FB 1.5.3
CREATE table Table1
(Column1 VARCHAR(255) collate pxw_cyrl);
CREATE table Table2
(Column2 VARCHAR(255));
insert into Table1 values ('Строка Первая');
insert into Table1 values ('Строка вторая');
insert into Table1 values ('Строка третья');
insert into Table2 values ('Строка Первая');
insert into Table2 values ('Строка вторая');
insert into Table2 values ('Строка третья');
Следите за руками:
select * from table1 t1 left join Table2 t2
on t1.column1 = t2.column2
PLAN JOIN (T1 NATURAL,T2 NATURAL)
Результат:
COLUMN1 COLUMN2
Строка Первая Строка Первая
Строка вторая Строка вторая
Строка третья Строка третья
А теперь
select * from table1 t1 inner join Table2 t2
on t1.column1 = t2.column2
Что получаем:
COLUMN1 COLUMN2
Строка Первая Строка Первая
Строка третья Строка третья
Дело, как Вы уже догадались, в плане запроса
PLAN MERGE (SORT (T2 NATURAL),SORT (T1 NATURAL))
А Collate-то у нас по моей забывчивости разный, и сортировка идет тоже по-разному. Да здравствует единый Collate на все столбцы в базе!
P.S. Не знаю, считать ли это багом, но другой Plan серверу навязать не удалось
Inner join по строковым столбцам с разным Collate
-
- Сообщения: 144
- Зарегистрирован: 16 фев 2006, 22:36