я, прежде чем задавать такие вопросы, в свое время экспериментировал сам, тем более если уже есть готовая база... или сложно сделать два запроса, один с like, а другой с locate и проверить скорость их работы?
Есть две таблици Модели (25 000 записей) name_model code_продажа samsung x820 1 Lg 1300 1 Товары name_data cena samsung x820+СП 1000 lg 1300 black 1200 lg 1300 original 1500 таблица Модели наполняется вручную по 30-50 новых моделей в сутки таблица Товары наполняется автоматом из xml выгрузок прайсов интернет-магазинов (каждую неделю) какая же структура здесь может быть?
не согласен, если чуток переделать таблицы, метод заливки в них данных и сами данные, то все прекрасно будет работать...
как имено переделать таблици ? додать code_модель и code_товар, сделав их индексами? тогда как изменить метод заливки данных?
как тогда проверить являється ли например "телефон Lg 1300 black" полем, которое в себе содержит "Lg 1300"? не"телефон Lg 1300 black" like "%Lg 1300%" , а "телефон Lg 1300 black" содержит "lg 1300" .
Модели: model_id int 11 model name varchar 50 строка: 11 samsung x820 Товары: model_id model_name_extra (или только экстра) price строка: 11 samsung x820+СП 2300 добавление из хмл: select model_id from model where locate(model_name,$newname) (один раз при добавлении записи)
если сделать так, то на выполнение select model_id from model where locate(model_name,$newname) уходит 0,09 сек таких проверок для одного прайса надо будет сделать около 2000 (0,09*2000=180 сек/60=3 мин.), а прайсов от 40 магазинов (40*3 мин. =2 часа)
неверно, число моделей будет многократно меньше. Но даже если так, то все равно эту проверку надо делать один раз при добавлении, а не каждый раз при выводе. Способы ускорить этот поиск дальше еще есть, но сначала надо разобраться со структурой.
1) backup! backup! backup! 2)delete from table where 1 insert into table ... но сначала давай все распишем. у тебя названия моделей в хмл всегда начинаются правильно? не случится "зеленый samsung x100" ?
У тебя две задачи: 1) сделать быструю выборку из твоей базы. 2) обеспечить приемлемое время загрузки новых данных. первое обеспечивается выборкой данных по модели по ее номеру в поле с ключом. для второго надо четко представить в каком виде могут приходить входные данные. Если всегда название приходит в виде samsung x820 green blabla то создаем поле с индексом для быстрого поиска куда пхаем substring(model_name,10) и ищем where fastfind=substring($model_name,10) and locate(... если нет - то будет чуть сложнее, но важнее сейчас расписать как будут добавляться новые модели. В общем случае тебе надо создавать свою базу моделей и беречь ее от всяких глупых пользователей, у который может быть 9 вариантов названия фирмы самсунг.
Написал грабер, который находит новые модели на странице новых моделей одного сайта. После визуального просмотра добавляю в таблицу инсертом из хмл может прити что угодно ! и "Зеленый телефон Lg 1300 back" тоже!