Выбрать не пустые строки. HELP!
Выбрать не пустые строки. HELP!
В общем есть табличька в ней varchar(30) поле RETURN_DOCS.
На всем протяжении жизни таблички в неё добавляют редактируют и удаляют записи ... при этом RETURN_DOCS порой бывает NULL после добавления строки, но без занесения данных в RETURN_DOCS, ... также бывает просто пустой если данные в RETURN_DOCS потёрли ... ну соответствено забит буквенными данными. По RETURN_DOCS построенн индекс.
Требуется выбрать не пустые строки из всей таблицы.
У меня идея только делать так:
SELECT DOSTAVKA.RETURN_DOCS
FROM DOSTAVKA
WHERE
DOSTAVKA.RETURN_DOCS <> ''
но FB-1.5.3 строит план: PLAN (DOSTAVKA NATURAL)
Как правильно выбрать не пустые строки используя только индексные чтения ?
На всем протяжении жизни таблички в неё добавляют редактируют и удаляют записи ... при этом RETURN_DOCS порой бывает NULL после добавления строки, но без занесения данных в RETURN_DOCS, ... также бывает просто пустой если данные в RETURN_DOCS потёрли ... ну соответствено забит буквенными данными. По RETURN_DOCS построенн индекс.
Требуется выбрать не пустые строки из всей таблицы.
У меня идея только делать так:
SELECT DOSTAVKA.RETURN_DOCS
FROM DOSTAVKA
WHERE
DOSTAVKA.RETURN_DOCS <> ''
но FB-1.5.3 строит план: PLAN (DOSTAVKA NATURAL)
Как правильно выбрать не пустые строки используя только индексные чтения ?
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Тоже самое .... индекс не используется ... но идея неплохая ... создам smalint поле return_docs_flag check in (0,1) попробую триггером его формировать .. если не пустое поле return_docs то в return_docs_flag капает 1 ... ну и потом выборку делать по return_docs_flagIvan_Pisarevsky писал(а):А если триггером из пустой строки делать NULL-ы и искать
where some_field is not null
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Ну не null-ы, это я так навскидку не проверив... можно триггером null-ы и пустые строки менять на что-нидь вида "~ПОЛЕ_НЕ_ЗАПОЛНЕНО~" и никуда оно не денется отберется по индексу.Эстет писал(а):Тоже самое .... индекс не используется ... но идея неплохая ... создам smalint поле return_docs_flag check in (0,1) попробую триггером его формировать .. если не пустое поле return_docs то в return_docs_flag капает 1 ... ну и потом выборку делать по return_docs_flagIvan_Pisarevsky писал(а):А если триггером из пустой строки делать NULL-ы и искать
where some_field is not null
Re: Выбрать не пустые строки. HELP!
Я заранее прошу прощения - может чего с просонья не разобрал. Но почему нельзя использовантьЭстет писал(а):В общем есть табличька в ней varchar(30) поле RETURN_DOCS.
На всем протяжении жизни таблички в неё добавляют редактируют и удаляют записи ... при этом RETURN_DOCS порой бывает NULL после добавления строки, но без занесения данных в RETURN_DOCS, ... также бывает просто пустой если данные в RETURN_DOCS потёрли ... ну соответствено забит буквенными данными. По RETURN_DOCS построенн индекс.
Требуется выбрать не пустые строки из всей таблицы.
У меня идея только делать так:
SELECT DOSTAVKA.RETURN_DOCS
FROM DOSTAVKA
WHERE
DOSTAVKA.RETURN_DOCS <> ''
но FB-1.5.3 строит план: PLAN (DOSTAVKA NATURAL)
Как правильно выбрать не пустые строки используя только индексные чтения ?
Код: Выделить всё
SELECT DOSTAVKA.RETURN_DOCS
FROM DOSTAVKA
WHERE
DOSTAVKA.RETURN_DOCS > ''
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Попробовал... да, таки индейская избушка фигвам...
Предлагаю выделить это поле в отдельную табличку, соответственно связь по ключу, как обычно. Если запись пустая, то в этой вспомогательной табличке вообще не должно быть записи. Дальше отбор иннер джойном, соответсвенно сделать внешний ключ, индекс по нему создастся автоматом, ну думаю мысль ясна.
Предлагаю выделить это поле в отдельную табличку, соответственно связь по ключу, как обычно. Если запись пустая, то в этой вспомогательной табличке вообще не должно быть записи. Дальше отбор иннер джойном, соответсвенно сделать внешний ключ, индекс по нему создастся автоматом, ну думаю мысль ясна.
Ну не дайте же умереть дураком! Ну обясните чего вы тут огород городите, если индекс чеплятся, когда вместо неравно используется больше и при этом ни null, ни пустые строки не отображаются?Ivan_Pisarevsky писал(а):Попробовал... да, таки индейская избушка фигвам...
Предлагаю выделить это поле в отдельную табличку, соответственно связь по ключу, как обычно. Если запись пустая, то в этой вспомогательной табличке вообще не должно быть записи. Дальше отбор иннер джойном, соответсвенно сделать внешний ключ, индекс по нему создастся автоматом, ну думаю мысль ясна.
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34