Mysql соответствуют … против по сравнению с простым как “%term %”

Что случилось с:

$term = $_POST['search'];

function buildQuery($exploded,$count,$query)
{
   if(count($exploded)>$count) 
   {
      $query.= ' AND column LIKE "%'. $exploded[$count] .'%"';
      return buildQuery($exploded,$count+1,$query);
   }
   return $query;
}

$exploded = explode(' ',$term);
$query = buildQuery($exploded,1,
'SELECT * FROM table WHERE column LIKE "%'. $exploded[0] .'%"');

и затем запросите дб для получения результатов в определенном порядке, вместо того, чтобы использовать myIsam-единственное соответствие sql... против?

Это бездельничало бы производительность существенно?

5
задан Bill Karwin 9 December 2011 в 23:15
поделиться

2 ответа

Разница в алгоритме, который MySQL использует для поиска ваших данных за кулисами. Полнотекстовый поиск также позволяет выполнять сортировку по релевантности. Поиск LIKE в большинстве случаев будет выполнять полное сканирование таблицы, поэтому в зависимости от объема данных вы можете увидеть проблемы с производительностью. Полнотекстовый движок также может иметь проблемы с производительностью при работе с большими наборами строк.

С другой стороны, я бы добавил в этот код кое-что, чтобы избежать разобранных значений. Возможно, вызов mysql_real_escape_string ()

6
ответ дан 13 December 2019 в 05:36
поделиться

Вы можете посмотреть мою последнюю презентацию для университета MySQL:

http://forge.mysql.com/wiki/Practical_Full-Text_Search_in_MySQL

Слайды также здесь:

http://www.slideshare.net/billkarwin/practical-full-text-search-with-my-sql

В моем тесте использование LIKE '%pattern%' было более чем в 300 раз медленнее, чем использование индекса MySQL FULLTEXT. Мои тестовые данные составили 1.5 миллиона сообщений из дампа данных StackOverflow October

.
6
ответ дан 13 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: