- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Оптимизация поиска в MySQL
Есть таблица sur_val, в ней два поля: surname (фамилия), value (значение фамилии).
Поле surname рассортировано по алфавиту, от меньшего к большему (от А до Я).
Поиск осуществляется так:
search_surname - фамилия, значение которой нужно найти
SELECT value FROM sur_val WHERE surname=search_surname
Вопрос: как бы оптимизировать SQL-запрос или структуру таблицы так, чтобы увеличить скорость поиска среди большого количества фамилий?
Недавно в отрасли ?
http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81_(%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)
Недавно в отрасли ?
http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81_(%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)
Вдруг ещё что можно оптимизировать.
srarwars добавил 11.12.2009 в 22:26
так добавить поле id что ли? тип int ?
Точно недавно. int не надо добавлять. к индексам напрямую это не относится. многое зависит от задачи.
Узнав расшифровку незнакомого термина, стоит погуглить, чтобы узнать типичные методы применения и специфику применения в mysql.
Пример:
В базе две фамилии
Васильев
Дороженко
Надо найти значение фамилии Васильевский.
Такой фамилии в базе нет, но значение фамилии Васильев подходит для фамилии Васильевский.
Как тогда?
То есть все остальное вы уже дочитали? а там разве не написано, что индексы в mysql позволяют неплохо сокращать время поиска по известной левой части строки ? ну там где используется конструкция where name like 'васильев%'; ?
То есть все остальное вы уже дочитали? а там разве не написано, что индексы в mysql позволяют неплохо сокращать время поиска по известной левой части строки ? ну там где используется конструкция where name like 'васильев%'; ?
Да, уже дочитал.
Но мне надо найти фамилию Васильевский, следовательно запрос будет
where name like 'Васильевский%' и не даст результата, т. к. такой фамилии нет
Да, уже дочитал.
Но мне надо найти фамилию Васильевский, следовательно запрос будет
where name like 'Васильевский%' и не даст результата, т. к. такой фамилии нет
where name like 'Васильевский%' и не даст результата, потому что там нет такой строки
where name like 'Васильев%' вернёт одну строку, потому что там есть "Васильев", в чём вопрос?
Такой фамилии в базе нет, но значение фамилии Васильев подходит для фамилии Васильевский.
а давайте вы сначала осмыслите что mysql вам предоставляет, а потом подумаете как в его терминах изложить вашу задачу?
что значит "подходит" ? нет такого понятия в субд. Есть операции точного сравнения = и поиска по маске like.
Вот и думайте. Может быть, вас устроит при вставке данных хранить корень фамилии (василь) в отдельном поле и по нему уже искать. Выделить корень фамилии - это уже совсем другая история и не обязательно напрягать mysql. Наверное есть парсеры всякие.
Можно написать простенький грамматический анализатор с базой окончаний и т.п. Он будет возвращать корень слова, к примеру. А по корню уже можно будет искать, используя полнотекстовые запросы.
srarwars добавил 12.12.2009 в 01:20
что значит "подходит" ? нет такого понятия в субд. Есть операции точного сравнения = и поиска по маске like
Я имел ввиду что значение для фамилия Васильев и Васильевский одно и тоже.
>> Но мне надо найти фамилию Васильевский, следовательно запрос будет
>> where name like 'Васильевский%'
-- хм номер раз
>> хранить корень фамилии в отдельном поле и по нему уже искать
номер два. причем, в отдельной табле на выделенном сервере. сорри, не удержался.