Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоComboВсе проекты

Почему в запросе "SELECT * FROM table WHERE tag= 2020" не используется индекс?

Андрей и Марина Мастер (2481), закрыт 6 дней назад
Если вот так:
SELECT * FROM table WHERE tag= 2020;
индекс не используется и происходит полное сканирование таблицы

А если вот так:
SELECT * FROM table WHERE tag= "2020";
индекс используется.

Столбец `tag` varchar(50) NOT NULL
Лучший ответ
Alexandr Мудрец (11100) 1 месяц назад
Потому что, значение строковых констант заключается в кавычки.
Андрей и МаринаМастер (2481) 1 месяц назад
Но ведь это значение все равно преобразуется в строковое если нужная строка таки возвращается в обоих случаях. Но почему индекс не используется?
При этом если делать выборку по числовому id, то работать с индексом будет как так:
SELECT * FROM table WHERE id=7;
так и так
SELECT * FROM table WHERE id="7";
Андрей и Марина, откуда такое знание " все равно преобразуется в строковое"?
Остальные ответы
Иван Жердев Мудрец (10968) 1 месяц назад
если у тебя столбец с датами имеет тип VARCHAR - то это уже зашквар; у тебя УЖЕ скорость сканирования в разы меньше
Андрей и МаринаМастер (2481) 1 месяц назад
Вот примеры других значений в этом столбце: 2014, ass, belly, blonde, boobs, brunette, nipples, nude, portrait, sexy, tanned, tattoo, women, women outdoors, а, блондинка, брюнетка, взгляд, горы, грудь, девушка, деревья, красивая, красота, красотка, модель, море, небо, ножки, поза, позирует, попа, попка, природа, проф фото, секси, тело, трусики, фигура, цветы, шатенка
Иван Жердев Мудрец (10968) Андрей и Марина, о, ну пизdеc, спасибо хоть что ты эту важную информацию раскрыл во втором посте, а не через полтора часа споров и дискуссий
Похожие вопросы