Помогите с Sql-запросом для Sphinx`a

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
lilicbush
Сообщения: 32
Зарегистрирован: 2011.04.17, 18:55

Помогите с Sql-запросом для Sphinx`a

Сообщение lilicbush »

Всем доброго времени суток... не могу разобраться со Сфинксом, помогите кто может...

Вопрос в следующем, есть 2 базы, table1(id,name,brand,art) и table2(id,brand,art,brand_r,art_r)...

Нужно выбрать art из table1, и паралелльно выбрать те же art из table2, и вернуть art_r WHERE art=table1.art из табле2... не знаю как сделать, заранее спасибо!
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение Ekstazi »

Используйте join, на сколько я помню, sphinx ограничено поддерживает join ы
lilicbush
Сообщения: 32
Зарегистрирован: 2011.04.17, 18:55

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение lilicbush »

Да, я попробовал, с JOIN, и без JOIN пробовал... только как-то сложные запросы он не понимает, повисает на Индексации...((( Но спасибо!)))
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение Stamm »

Что значит повисает? Сфинксу пофиг на запросы: с JOIN и без он отлично работает
А так, выкладывайте конфиг, чтобы было проще понять, где ошибка.
lilicbush
Сообщения: 32
Зарегистрирован: 2011.04.17, 18:55

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение lilicbush »

Код: Выделить всё

sql_query = SELECT a.id,a.art,a.brand,a.name,b.CatNumber AS Aart,b.RCatNumber AS Bart \
    FROM (SELECT t.id,t.art,t.brand,t.name FROM MgnProducts AS t WHERE t.id>='$start' AND t.id<='$end')a, \
    MgnCrosses AS b WHERE a.art = b.CatNumber
Это был последний вариант запроса... а повисает на индексировании, как я понимаю запрос очень тяжко обрабатывается, так как в БД 19 миллионов записей... а вообще черт его знает!)))
А еще вопрос оффтоп, есть ли вариант выбирать не по ID, ну или в массиве attrs переносить...???

Заранее спасибо...
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение Stamm »

Что за странные запросы :shock:

Код: Выделить всё

SELECT a.id,a.art,a.brand,a.name, b.CatNumber AS Aart, b.RCatNumber AS Bart \
FROM MgnProducts AS a  \
JOIN MgnCrosses AS b ON a.art = b.CatNumber \
WHERE \
t.id>='$start' AND t.id<='$end' ;
Какое значение у sql_range_step?
lilicbush
Сообщения: 32
Зарегистрирован: 2011.04.17, 18:55

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение lilicbush »

5000, сейчас, но ставил и 500 и 25000 одинаково)
lilicbush
Сообщения: 32
Зарегистрирован: 2011.04.17, 18:55

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение lilicbush »

В общем почему-то не получается...
Ситуация следующая, есть 2 БД, в одной хранятся артикулы, во второй артикулы и замены, как при запросе по артикулу получить замену?

Код: Выделить всё

sql_query = /
SELECT r.replace as analog FROM `analogs` AS r JOIN `products` AS p ON(p.art=r.art) WHERE r.id>='$start' AND r.id<='$end'
 
тупо пишет Indexing index ... и никаких движений... подскажите как поправить.. Заранее спасибо...
Последний раз редактировалось lilicbush 2011.08.31, 13:21, всего редактировалось 1 раз.
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение Stamm »

Знаки больше и меньше должны быть, не равно!
lilicbush
Сообщения: 32
Зарегистрирован: 2011.04.17, 18:55

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение lilicbush »

Stamm писал(а):Знаки больше и меньше должны быть, не равно!
поправил... без изменений...
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение Stamm »

Выложите полный конфиг сфинкса
lilicbush
Сообщения: 32
Зарегистрирован: 2011.04.17, 18:55

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение lilicbush »

Код: Выделить всё

source main
{
        type            = mysql
        sql_host        = ********
        sql_user        = ********
        sql_pass        = ********
        sql_db          = ********
        sql_port        = 3306
        sql_sock        = /var/run/mysqld/mysqld.sock
        mysql_connect_flags = 32 # 32- включение сжатие при обмене данными с БД
        
        sql_query_pre = SET NAMES utf8
        sql_query_pre = SET SESSION query_cache_type=OFF  
}
source test : main
{
    sql_query = SELECT p.id, p.art, p.name, p.tbrand, r.brand, r.brand_r, r.art , r.art_r \
        FROM `crosses` AS r \
        JOIN `products` AS p ON ( p.art = r.art ) \
        WHERE r.id >= '$start' AND r.id<='$end'
        
    
    sql_query_range = SELECT MIN(id),MAX(id) FROM crosses
    sql_range_step  = 500
    
    sql_query_info = SELECT p.name,p.art,c.art,c.art_r FROM crosses AS c,products AS p WHERE c.art='$id'
    
}
index test
{
    source = test
    path = /var/www/indexes/crosses/
    docinfo = extern
    mlock = 0
    #morphology = stem_enru
    min_word_len = 1
    min_prefix_len=1
    charset_type = utf-8
    html_strip = 1 
    enable_star = 0
}
indexer
{
    mem_limit = 512M
}
searchd
{
        listen = 127.0.0.1:3312
        #port = 3312

        query_log = /var/log/sphinx/query.log
        log = /var/log/sphinx/searchd.log
        pid_file = /var/log/sphinx/searchd.pid

        read_timeout = 5
        compat_sphinxql_magics = 0
        max_children = 30
        max_matches = 20
        dist_threads = 2
}

 
Ну вот как-то так...
Идея в том чтобы по арту в прайсе найти в кроссах замены этому арту и вернуть ид замен в прайсе...
:( :( :(
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение Stamm »

Можете ещё дамп базы прислать? +)
lilicbush
Сообщения: 32
Зарегистрирован: 2011.04.17, 18:55

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение lilicbush »

Stamm писал(а):Можете ещё дамп базы прислать? +)
:D :D :D
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение Stamm »

Проблема похоже нашлась: в таблице crosses поле id имеет значения от 252020 до 19269541. Причем количество строк в crosses 12.
Соотвественно, сфинкс пробегался циклом с шагом 500 между крайними значениями. Это просто долго выполняется.
lilicbush
Сообщения: 32
Зарегистрирован: 2011.04.17, 18:55

Re: Помогите с Sql-запросом для Sphinx`a

Сообщение lilicbush »

Stamm писал(а):Проблема похоже нашлась: в таблице crosses поле id имеет значения от 252020 до 19269541. Причем количество строк в crosses 12.
Соотвественно, сфинкс пробегался циклом с шагом 500 между крайними значениями. Это просто долго выполняется.
А как поставить точное соответствие!? И вообще варик с собой не только ID тягать!?
Ответить