У меня есть таблица с плохими индексами, и я создаю php-страницу, где вы можете заполнить любое из полей, и оно даст вам результаты в зависимости от того, что было заполнено. это запрос, который я хочу запустить. Проблема заключается в том, что нет никаких индексов на просто fname
Использовать столбец, но игнорировать данные в столбце
select * from members where 1 and fname = 'Ryan' limit 30
Чтобы получить мой запрос, чтобы использовать индекс, мне нужно добавить lname
к запросу. То, что я не знаю, заключается в том, как добавить его, не делая ничего (если это возможно).
select * from members where 1 and lname = '{ANYTHING}' and fname = 'Ryan' limit 30
Я использовал {ANYTHING}
в качестве заполнителя для обозначения, а любое значение. Выполнение этого будет использовать индекс, но как я могу сказать mysql игнорировать то, что находится в этом столбце для поиска (если возможно)?
Вы хотите принять либо значение, либо значение? Значение возвращает все строки или фильтруется? Если это так, я бы коротко замыкался с переменной (например, (@MyLname IS NULL ИЛИ lname = @ MyLname), где @MyLName является параметром. –
Как бы добавить фамилию, которую вы не знаете, а затем использовать подстановочный поиск, поможет улучшить поиск? (является ли индекс составным индексом имени Фамилия?), если да, почему бы не построить индекс JUST по имени? – xQbert
'lname like%', но я сомневаюсь, что это вам поможет. – Kevin