Мне нужно создать индекс по 3 столбцам:
`gender` tinyint(1) NOT NULL default '0',
`age` tinyint(2) NOT NULL default '0',
`is_looking_for` varchar(30) NOT NULL default ''
Проблема в третьем столбце, который является VARCHAR, и этот индекс не будет использоваться.Я не могу сделать это INT.Каждый пользователь, который создает профиль на этом сайте знакомств, отвечает на вопрос «Я ищу…», и он / она может выбрать несколько вариантов, например, ищу мужчинуищу женщину или пару (женщина + женщина)ищу мужчину или женщину, пару (мужчина + женщина)
Теперь я сохраняю эту информацию в поле VARCHAR (is_looking_for) следующим образом:
1,3,5
и запросы MySQL выглядятнапример:
select from profiles where gender='$gender' and age between $minage and $maxage
and is_looking_for LIKE '%$lookingfor%';
Этот запрос очень плохой, но я не знаю, как решить эту проблему.Я не хочу создавать разные столбцы для каждого варианта пола - мужской, женский, пара (m + f), пара (f + f) и т. Д., Потому что тогда мне нужно создать несколько индексов - отдельный индекс для каждого пола:
KEY `gender` (`gender`,`age`,`female`)
KEY `gender_1` (`gender`,`age`,`male`)
KEY `gender_2` (`gender`,`age`,`couple_male_female`)
и т. Д.
У меня была идея назначить уникальный номер каждой возможной комбинации, а затем сохранить этот номер в поле INT, но я сдался, потому что это слишком сложно.
Может кто-нибудь помочь?Спасибо.