Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
gsAlexander
- Сообщения: 12
- Зарегистрирован: 07 ноя 2007, 16:28
Сообщение
gsAlexander » 03 дек 2007, 23:05
Доброго все дня!
Есть такой запрос:
Код: Выделить всё
SELECT
f.id, CAST('Òåêóùàÿ' AS VARCHAR(7)), 99999 AS revision,
f.script, c.name, f.editiondate
FROM
gd_function f JOIN gd_contact c ON c.id = f.editorkey
WHERE
f.id = :ID
UNION
SELECT
l.id, CAST(l.revision AS VARCHAR(7)), l.revision,
l.script, c.name, l.editiondate
FROM
gd_function_log l JOIN gd_contact c ON c.id = l.editorkey
WHERE
l.functionkey = :ID
ORDER BY 3 DESC
поле script в обеих таблицах Blob, revision - Integer. Запрос под YA и FB.2.0. работал верно. На FB 2.1.0.17081 выходит ошибка:
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Datatype BLOB is not supported for sorting operation.
-
mdfv
- Сообщения: 119
- Зарегистрирован: 23 май 2006, 15:53
Сообщение
mdfv » 04 дек 2007, 07:29
По идее, то что оно раньше работало являлось большой вольностью, которую убрали.
Может явный cast (substring) к varchar делать ?
-
gsAlexander
- Сообщения: 12
- Зарегистрирован: 07 ноя 2007, 16:28
Сообщение
gsAlexander » 04 дек 2007, 09:46
mdfv писал(а):По идее, то что оно раньше работало являлось большой вольностью, которую убрали.
Может явный cast (substring) к varchar делать ?
ORDER идёт по полю Integer. Каждый запрос в отдельности работает, с UNION нет. Где здесь вольности?
-
mdfv
- Сообщения: 119
- Зарегистрирован: 23 май 2006, 15:53
Сообщение
mdfv » 04 дек 2007, 09:53
ORDER идёт по полю Integer.
обсчитался
-
stix-s
- Заслуженный разработчик
- Сообщения: 557
- Зарегистрирован: 13 дек 2005, 11:52
Сообщение
stix-s » 04 дек 2007, 10:00
mdfv писал(а):ORDER идёт по полю Integer.
обсчитался
дык не UNION ALL - следовательно предполагается DISTINCT, про что и написано по ссылке выше
-
stix-s
- Заслуженный разработчик
- Сообщения: 557
- Зарегистрирован: 13 дек 2005, 11:52
Сообщение
stix-s » 04 дек 2007, 10:25
gsAlexander писал(а):
поле script в обеих таблицах Blob, revision - Integer. Запрос под YA и FB.2.0. работал верно. На FB 2.1.0.17081 выходит ошибка:
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Datatype BLOB is not supported for sorting operation.
Заведи поле с хешем для блобов и будет те шасье
-
gsAlexander
- Сообщения: 12
- Зарегистрирован: 07 ноя 2007, 16:28
Сообщение
gsAlexander » 04 дек 2007, 10:25
stix-s писал(а):mdfv писал(а):ORDER идёт по полю Integer.
обсчитался
дык не UNION ALL - следовательно предполагается DISTINCT, про что и написано по ссылке выше
Спасибо за ответ. Только как то это некрасиво с запросом...
-
stix-s
- Заслуженный разработчик
- Сообщения: 557
- Зарегистрирован: 13 дек 2005, 11:52
Сообщение
stix-s » 04 дек 2007, 10:29
gsAlexander писал(а):
Спасибо за ответ. Только как то это некрасиво с запросом...
Возможно и некрасиво, но ИМХО абсолютно правильно, ибо сервер опупеет вытаскивать все блобы немеряного размера в буфер для их сортировки и усечения
по-моему запрос сам некрасивый