powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Запрос не использует индекс
24 сообщений из 49, страница 2 из 2
Запрос не использует индекс
    #38594594
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамна неявное приведение, особенно как в сабжевом примере,
будут только аристократы и эти самые.
Вот для "этих самых" Таблоид и создал свой топик.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38594652
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Который вопросы и ответы? :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38594674
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамКоторый вопросы и ответы? :)yes, it is ! :-)
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38594896
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамВо-первых, потому что 1ю0 - это нифига не integer (внезапно
я полагаю, что использовать уникальность int для его кастования в строку при сравнении со строкой, вместо всех остальных случаев кастования строки к типу столбца, является некошерным. Также полагаю, что dimitr именно это и имел в виду.
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595104
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> я полагаю ... является некошерным

Некошерность как определяется, на глаз?
Или "я полагаю"-стью аргументы и ограничатся?
Мнение ДЕ итак сто лет уже известно, просто
не надо, как иногда бывает, делать вид, что по
вопросу всего одно единственное мнение и оно
и только оно правильное и кошерное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595138
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамНекошерность как определяется, на глаз?
нет, исключительно так:
field = value.
во всех случаях (как я понял) value преобразуется к типу field. Ты же предлагаешь (опять же, насколько я понял) только для int (!) field преобразовывать к value. Налицо "двойные стандарты", которые в перспективе могут привести к глюкам в коде (нечитаемость, тут рыбу заворачивали, и т.п.) и функционале.
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595143
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvво всех случаях (как я понял) value преобразуется к типу field . Ты же предлагаешь (опять же, насколько я понял) только для int (!) field преобразовывать к value. Налицо "двойные стандарты", которые в перспективе могут привести к глюкам в коде (нечитаемость, тут рыбу заворачивали, и т.п.) и функционале.Всё наоборот!
При указании литерала, тип которого отличается от varchar-поля, ЭТО САМОЕ ПОЛЕ преобразуется к типу литерала. Оттого и план меняется на natural.
Рустам говорит (и я с ним согласен), что когда литерал есть целое число, то тут можно однозначно его интерпретировать и вместо where cast(field as int) = :literal сделать обратное - where field = cast(:literal as varchar(NN)).
Такое сравнение (варчар полей с целыми числами) настолько часто, что можно было бы сделать исключение для этого случая.
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595144
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидможно было бы сделать исключение для этого случая
фсад
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595156
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Такое сравнение (варчар полей с целыми числами) настолько часто

И вот именно тут ты категорически неправ. Смотри "в-четвёртых".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595159
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидВсё наоборот!
При указании литерала, тип которого отличается от varchar-поля, ЭТО САМОЕ ПОЛЕ преобразуется к типу литерала.
непорядок...
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595164
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> непорядок...

Ф сад. (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595167
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамСмотри "в-четвёртых".
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595170
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(сдавленным голосом из сада)

Но ведь такие ошибки - их весьма трудно обнаружить среди сотен строк полезнейшего кода. Стейтменты вида select ... from contragents_ref where inn = 7755092124 (без апострофов) - они настолько хорошо "мимикрируют" при просмотре, что на это будет налетать еще много народу. Тип поля надо постоянно в башке держать :(
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595188
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид(сдавленным голосом из сада)

Но ведь такие ошибки - их весьма трудно обнаружить среди сотен строк полезнейшего кода. Стейтменты вида select ... from contragents_ref where inn = 7755092124 (без апострофов) - они настолько хорошо "мимикрируют" при просмотре, что на это будет налетать еще много народу. Тип поля надо постоянно в башке держать :(
Тогда надо попросить соответствующие предупреждения при компиляции процедур, ну так я думаю
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595209
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидСтейтменты вида select ... from contragents_ref where inn = 7755092124 (без апострофов) - они настолько хорошо "мимикрируют" при просмотре, что на это будет налетать еще много народу. Тип поля надо постоянно в башке держать :(
если программист, работая с ИНН, не способен удержать у себя в голове, что это строка а не число - то это не лечится
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595211
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

а причем тут именно " ИНН " ? это эе только для наглядности изложения приведено :-)
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595283
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одно дело, когда человек знает, как работает :date = :varchar, и пишет так (типа я знаю как эта фича работает, а отальные мне побарабану).
А другое дело, когда человек при компиляции такого видит ошибку, и поэтому пишет :date = date :varchar, и оно предсказуемым образом работает и понятно для всех.

В конечном итоге полезным было бы иметь проверку типов при компиляции. Как ни крути :)
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595398
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mТогда надо попросить соответствующие предупреждения при компиляции процедур, ну так я думаюВ соседнем подразделе у Хвастунова?
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595425
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskym7mТогда надо попросить соответствующие предупреждения при компиляции процедур, ну так я думаюВ соседнем подразделе у Хвастунова?
Ну таки да
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595434
stelvic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во весь спор не вникал, но, что первое бросается в глаза:
запрос
Код: plsql
1.
select * from t where cast(vc as integer)=1

совсем не одно и то же, что
Код: plsql
1.
select * from t where vc='1'
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595448
Сисдба Мастеркеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме того, никто вообще не использует параметры ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595502
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stelvicВо весь спор не вникал, но, что первое бросается в глаза:
запрос
Код: plsql
1.
select * from t where cast(vc as integer)=1


совсем не одно и то же, что
Код: plsql
1.
select * from t where vc='1'

Спорили выше в том числе и про это.
m7mНу таки даБудешь гонцом? ;)
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595729
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Запрос не использует индекс
    #38595840
oleg_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид(сдавленным голосом из сада)

Но ведь такие ошибки - их весьма трудно обнаружить среди сотен строк полезнейшего кода. Стейтменты вида select ... from contragents_ref where inn = 7755092124 (без апострофов) - они настолько хорошо "мимикрируют" при просмотре, что на это будет налетать еще много народу. Тип поля надо постоянно в башке держать :(
Это как писать. Если с детства не приучили к венгерской нотации - будешь мучаться всю... карьеру.
В моем коде ни в жисть не ошибешься:
Код: sql
1.
WHERE sINN = 7755092124 -- Ахтунг! поле строкового типа


про параметры:
Код: sql
1.
2.
3.
(S_INN VARCHAR(...))
...
WHERE sINN = :S_INN -- Гуд. типы одинаковые 



уже при написании будет "дискомфорт"
Код: sql
1.
 WHERE sINN = :iINN ... 
...
Рейтинг: 0 / 0
24 сообщений из 49, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Запрос не использует индекс
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]