эффективный поиск по MySQL

Discussion in 'PHP' started by b3, 14 Mar 2011.

  1. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Хотелось бы выслушать мнение знатоков, поставлена задача сделать эффективный поиск в БД, информация хранится в поле varchar(255) какие варианты/способы/методы можете посоветовать для поиска.
    Пока что знаком с двумя методами:
    Code:
    SELECT * FROM `posts` WHERE MATCH (`subject`, `text`) AGAINST ('привет');
    и так:
    PHP:
    $sql "SELECT * FROM `links` WHERE `filename` REGEXP \'.*\' LIMIT 0, 30 ";
    Какова в них разница? Так же важна нагрузка, и скорость поиска.
     
    _________________________
  2. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    habrahabr.ru/blogs/mysql/25646/
     
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    b3 а что вы храните в таком поле? Для текста - мало, для переменных - обычно много. Да и искать в нем как-то неинтересно

    Из этих двух - первый вариант, естественно с использованием полнотекстового индекса. По причине индексирования - первый способ быстрее. По той же причине вставки в эту таблицу будут занимать больше времени. Выбирайте что вам лучше
     
    _________________________
  4. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    bxN5 нашли что сравнивать =) про LIKE можно вообще забыть.
    Gifts В поле хранится имя файла с расширением. Поиск нужен для того чтоб к примеру я ввел слово keygen и нашел все кейгены) имхо второй вариант с регекспами мне подходит? Есть еще какие варианты поиска?
     
    _________________________