За последние 24 часа нас посетил 19081 программист и 1684 робота. Сейчас ищут 912 программистов ...

Запрос ложит базу (а потом кладет)

Тема в разделе "MySQL", создана пользователем VadimSh, 4 фев 2010.

  1. VadimSh

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

    С нами с:
    4 фев 2010
    Сообщения:
    2
    Симпатии:
    0
    [sql]SELECT COUNT(n.nid) FROM drupal_node n
    LEFT JOIN drupal_node_revisions nr ON n.nid = nr.nid
    LEFT JOIN drupal_content_field_address cfa ON n.nid = cfa.nid
    LEFT JOIN drupal_content_field_phone cfp ON n.nid = cfp.nid
    WHERE n.status = 1
    AND (n.title LIKE '%test%' OR nr.body LIKE '%test%' OR cfa.field_address_value LIKE '%test%' OR cfp.field_phone_value LIKE '%test%' OR n.synonym LIKE '%test%')
    AND ( n.geotargeting LIKE ('%Almaty%') OR n.geotargeting='')[/sql]

    Запрос застревает в процессах, выполняется очень долго, весит по несколько минут, процессы копятся и база падает. Неужели такая реакция на LIKE.
    Что за тупняк. Подскажите.
     
  2. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Это же легко проверить.
    Убираете LIKE из условия и смотрите на результат.

    Плюс никто не мешает сделать EXPLAIN
     
  3. VadimSh

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

    С нами с:
    4 фев 2010
    Сообщения:
    2
    Симпатии:
    0
    убрал "drupal_content_field_address" запрос летает, как быть?!
     
  4. armadillo

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

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