Я выполняю удаленный запрос к базе данных Postgres, поддерживаемой поставщиком.Удаленный запрос выполняется через хранимую процедуру в SQL Server.Мой запрос не возвращает все записи, которые он должен.Если я добавлю еще один столбец в предложение where, то запрос вернет гораздо больше записей.
Я не могу понять, почему это происходит, и у меня есть подозрение, что я пропускаю еще больше записей.Вот код SQL Server.
Это выполняется почти сразу и возвращает 293 записи и не возвращает itemid 865
SELECT
itemid
FROM
OPENQUERY(PostgresSource, '
SELECT itemid
FROM items
WHERE
updated <= ''2018-10-16 23:59''
AND updated > ''2018-10-07''
')
Это выполняется за 14 секунд и возвращает 1469 записей и возвращает itemid 865!
SELECT
itemid
FROM
OPENQUERY(PostgresSource, '
SELECT itemid
FROM items
WHERE
updated <= ''2018-10-16 23:59''
AND updated > ''2018-10-07''
AND itemid <> ''anythingcangohere''
')
Информация о моей версии
PostgreSQL 9.5.3 на i686-pc-linux-gnu, скомпилированный gcc (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.1) 4.8.4, 32-bit
Мой коллега и я работаем над базами данных в течение многих лет, и мы просто можемне понять этоПо нашему мнению, добавление предложения в инструкцию WHERE не должно возвращать больше строк.Это продукт производителя, поэтому у нас нет доступа к самой коробке, и мы имеем ограниченный доступ к SQL.
Любая помощь будет принята с благодарностью!
Чтобы снять опасения, что мой код вышескриншоты - это не тот код, который вызывает проблемы.Я прошу прощения за размытие, но я должен размыть имена полей и имена таблиц.В поле или имени таблицы нет специальных символов или чего-либо еще, кроме цифр и букв.Снимки экрана показывают немного другое количество строк, чем указано выше, поскольку исходные данные меняются, и я сделал снимки экрана примерно через 24 часа после моего исходного поста.Оба приведенных ниже запроса были выполнены в течение нескольких секунд.