MySQL InnoDB - оптимизация LIKE

Discussion in 'PHP' started by GreenBear, 21 May 2008.

  1. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,548
    Likes Received:
    1,397
    Reputations:
    612
    В общем есть база - около 4гб, ~10млн рядов.
    выборка идет что-то типа t1 like 'text' AND t2 like 'text2' AND t3 like 'text3'
    . если из кеша - то моментально, однако новый поиск - 5 минут... это совсем не вариант.

    в общем -то опыта с большими базами нету особого... вообще справляется ли мускул с таким объемом?
     
  2. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Могу сказать, что определённо справляется, но это зависит от многих факторов... От типов полей, от наличия индексов, от того под каким конфигом крутится мускуль... Как пример - возьми гугл... Там кластер из мускульных серверов, и всё работает чики-пуки.
     
  3. Егорыч+++

    Staff Member

    Joined:
    27 May 2002
    Messages:
    1,373
    Likes Received:
    894
    Reputations:
    20
    Составной индекс по трем полям t1 t2 t3 т е индекс по тем полям по которым поиск... если ты делаешь поиск типа t1 like 'text' AND t2 like 'text2' AND t3 like 'text3' или t1 like 'text%' AND t2 like 'text2%' AND t3 like 'text3%' . А если t1 like '%text%' AND t2 like '%text2%' AND t3 like '%text3%' , тормоз будет по любому, тут надо реализовывать полнотекстный поиск. Использовать системы для индексации типа сфинкс
     
  4. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    > тут надо реализовывать полнотекстный поиск
    Эм.. FULLTEXT поддерживается только на MyISAM вроде
     
  5. gibson

    gibson Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    2 GreenBear может поможет, интересная статья
    http://habrahabr.ru/blog/mysql/35837.html