|
|
|
Преобразование типа в ODBC. Как отключить?
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток всем! Есть клиент-серверная архитектура вида: VFP6 <-> ODBC <-> PostgreSQL (Linux) На PostgreSQL имеется таблица с необходимыми индексами следующего вида: CREATE TABLE проводки ( КОД SERIAL, * * * ДОККОД INT NOT NULL, * * * ); На VFP6 создан параметризованный просмотр, имеющий к примеру следующий код: SELECT * FROM проводки WHERE ДОККОД=?pnDocNum Обращение к данным на PostgreSQL сервер происходит по команде: pnDocNum = 1234 && Определяем код конкретного документа REQUERY() На сервер поступает такой запрос: SELECT * FROM проводки WHERE ДОККОД='1234'::float8 Запрос выполняется очень долго, т.к. где-то в глубинах VFP6 или драйвера ODBC происходит преобразование типа константы 1234 к типу float8, что как я думаю вызывает преобразование значений ДОККОД из типа INT в тип float8 в таблице <проводки> в момент выполнения запроса. А если выполнить на сервере запрос SELECT * FROM проводки WHERE ДОККОД=1234, то он выполняется мгновенно. Как убрать это преобразование констант к типу float8? Заранее всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 18:52 |
|
||
|
Преобразование типа в ODBC. Как отключить?
|
|||
|---|---|---|---|
|
#18+
Через параметр числовые данные ВСЕГДА конвертируются в числа с плавающей точкой. Если необходимо явно передать целочисленное значение или число с фиксированным положением точки, то придется отказаться от параметра и формировать текст запроса явно. Код: plaintext 1. 2. Или же использовать явные команды конвертации самого сервера. Не знаю, есть ли такие в PostgreSQL, но в синтаксисе FoxPro это нечто вроде Код: plaintext Преобразование в действительный тип данных не может являтся причиной замедления выполнения запроса. Однако это может являться причиной некорректной обработки (выборки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2007, 14:36 |
|
||
|
Преобразование типа в ODBC. Как отключить?
|
|||
|---|---|---|---|
|
#18+
ВладимирМЧерез параметр числовые данные ВСЕГДА конвертируются в числа с плавающей точкой. Где об этом почитать можно? Мне надо доку нужным людям под нос подсунуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 09:14 |
|
||
|
Преобразование типа в ODBC. Как отключить?
|
|||
|---|---|---|---|
|
#18+
Kruchinin Pahan ВладимирМЧерез параметр числовые данные ВСЕГДА конвертируются в числа с плавающей точкой. Где об этом почитать можно? Мне надо доку нужным людям под нос подсунуть. Нигде. Это было обнаружено опытным путем. Правда, для MS SQL http://forum.foxclub.ru/read.php?29,144755,144755#msg-144755 Но, судя по вопросу, это касается и PostgreSQL Возможно, что-то на эту тему есть в описании собственно ODBC драйвера. Там должно быть написано во что (в какое представление) он конвертирует числовые данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 10:36 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34350372&tid=1589818]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 398ms |

| 0 / 0 |
