Задавайте вопросы, мы ответим
Вы не зашли.
Есть две таблицы SLOVAR(id,slovo) ARTICLES(id,slovo), ы первой таблице данные такие (1,хлеб) (2,пирожок) (3,тунец), во второй данные такие (1,колбаса)(2,хлеб)(3,хлебница) я делаю вот такой запрос 'SELECT * from articles where (articles.slovo=ANY (select slovo from slovar))' он мне честно находит слово "хлеб"... как сделать так, чтобы он мне нашел и "хлеб" и "хлебница"?
я незнаю хлеб там или нет... я в том селекте который написал показываю что я незнаю что я сравниваю.... я просто нахожу одинаковые слова в двух таблицах... но мне нужно не только 100% совпадение, а и совпадение по правилу LIKE "хлеб%"...
Неактивен
Что-то такое?
select * from SLOVAR s join ARTICLES a on a.slovo like CONCAT('%', s.slovo, '%');
mysql> set names 'utf8'; Query OK, 0 rows affected (0.00 sec) mysql> create table t_5013_ARTICLES(id int,slovo varchar(255)); Query OK, 0 rows affected (0.00 sec) mysql> create table t_5013_SLOVAR(id int,slovo varchar(255)); Query OK, 0 rows affected (0.00 sec) mysql> insert into t_5013_ARTICLES values(1,'колбаса'),(2,'хлеб'),(3,'хлебница'); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> insert into t_5013_SLOVAR values(1,'хлеб'),(2,'пирожок'),(3,'тунец'); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from t_5013_SLOVAR s join t_5013_ARTICLES a on a.slovo like CONCAT('%', s.slovo, '%'); +------+----------+------+------------------+ | id | slovo | id | slovo | +------+----------+------+------------------+ | 1 | хлеб | 2 | хлеб | | 1 | хлеб | 3 | хлебница | +------+----------+------+------------------+ 2 rows in set (0.00 sec)
Неактивен
хм... оно то работает но ооочень медленно... почему? таблица slovar имеет 1 500 000 строк, articles 200 000 строк.... но это не может быть так долго.... а там поиск идет реально минут 6.... как это может быть? и как это поправить.... но за пример огромнейшее спасибо...
Неактивен
lepriconl, добавьте индексы на поле slovo в обеих таблицах и сравните скорости.
Неактивен
реально Бодхисаттва)) Спасибо.
Неактивен
Только на сколько я помню LIKE не поддерживает никакую индексацию(вообще) и работает значительно медленнее чем полнотекстовый поиск.
Это на будущее.
Неактивен
Если искомая величина приходится на начало строки (т.е. поиск идет по 'слово%'), то индекс будет использован.
Неактивен
спасибо не не слышал об этом! Это во всех движках?
Неактивен
Да.
Неактивен