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

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

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

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

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