За последние 24 часа нас посетили 21689 программистов и 1045 роботов. Сейчас ищет 731 программист ...

Помогите с запросом!

Тема в разделе "MySQL", создана пользователем joost, 17 дек 2007.

  1. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    посмотри в сторону locate(, position(, ...
     
  2. joost

    joost Guest

    что сделать с полями, чтобы эти функции работали быстрее?
     
  3. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    ПРОЧЕСТЬ, что тебе написали в той ветке.
     
  4. joost

    joost Guest

    с точки зрения скорости, что лучше использовать like или locate?
     
  5. Ipolit

    Ipolit Активный пользователь

    С нами с:
    18 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    я, прежде чем задавать такие вопросы, в свое время экспериментировал сам, тем более если уже есть готовая база...

    или сложно сделать два запроса, один с like, а другой с locate и проверить скорость их работы?
     
  6. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Ipolit при такой структуре базы не поможет и match
     
  7. joost

    joost Guest

    это в какой ветке?
     
  8. joost

    joost Guest

    Есть две таблици

    Модели (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 выгрузок прайсов интернет-магазинов (каждую неделю)


    какая же структура здесь может быть?
     
  9. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    тебе уже рассказывали.
     
  10. joost

    joost Guest

    Вы согласны, что связать эти таблици ну никак не выйдет?
     
  11. Ipolit

    Ipolit Активный пользователь

    С нами с:
    18 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    точно :)
     
  12. Ipolit

    Ipolit Активный пользователь

    С нами с:
    18 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    не согласен, если чуток переделать таблицы, метод заливки в них данных и сами данные, то все прекрасно будет работать...
     
  13. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    joost Выйдет. Мешает прокладка между клавой и монитором.
     
  14. joost

    joost Guest

    как имено переделать таблици ? додать code_модель и code_товар, сделав их индексами?

    тогда как изменить метод заливки данных?
     
  15. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
  16. joost

    joost Guest

    как тогда проверить являється ли например "телефон Lg 1300 black" полем, которое в себе содержит "Lg 1300"?

    не"телефон Lg 1300 black" like "%Lg 1300%" , а "телефон Lg 1300 black" содержит "lg 1300" .
     
  17. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Модели:
    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)

    (один раз при добавлении записи)
     
  18. joost

    joost Guest

    если сделать так, то на выполнение select model_id from model where locate(model_name,$newname) уходит 0,09 сек
    таких проверок для одного прайса надо будет сделать около 2000 (0,09*2000=180 сек/60=3 мин.), а прайсов от 40 магазинов (40*3 мин. =2 часа)
     
  19. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    неверно, число моделей будет многократно меньше. Но даже если так, то все равно эту проверку надо делать один раз при добавлении, а не каждый раз при выводе. Способы ускорить этот поиск дальше еще есть, но сначала надо разобраться со структурой.
     
  20. joost

    joost Guest

    replace можно настроить так, чтобы он удалял строки в которых не делает замены?
     
  21. joost

    joost Guest

    уже переделал структуру. так какие "Способы ускорить этот поиск дальше"?
     
  22. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    1) backup! backup! backup!
    2)delete from table where 1
    insert into table ...

    но сначала давай все распишем.
    у тебя названия моделей в хмл всегда начинаются правильно? не случится "зеленый samsung x100" ?
     
  23. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    У тебя две задачи:
    1) сделать быструю выборку из твоей базы.
    2) обеспечить приемлемое время загрузки новых данных.

    первое обеспечивается выборкой данных по модели по ее номеру в поле с ключом.
    для второго надо четко представить в каком виде могут приходить входные данные.

    Если всегда название приходит в виде samsung x820 green blabla

    то создаем поле с индексом для быстрого поиска куда пхаем substring(model_name,10)
    и ищем where fastfind=substring($model_name,10) and locate(...

    если нет - то будет чуть сложнее, но важнее сейчас расписать как будут добавляться новые модели.
    В общем случае тебе надо создавать свою базу моделей и беречь ее от всяких глупых пользователей, у который может быть 9 вариантов названия фирмы самсунг.
     
  24. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Точнее кто вводит данные в таблицу models и как
     
  25. joost

    joost Guest

    Написал грабер, который находит новые модели на странице новых моделей одного сайта. После визуального просмотра добавляю в таблицу инсертом


    из хмл может прити что угодно ! и "Зеленый телефон Lg 1300 back" тоже!