2009-05-18 2 views
0

Мы разрабатываем нашу базу данных в MySql с помощью механизма innoDB. База данных содержит столбец типа varchar с каждой записью, содержащей около 3000 символов. Мы должны обеспечить поиск в этом столбце. Для ускорения цели нам нужно добавить индекс в этот столбец. Можете ли вы добавить некоторую информацию в этом отношении?mysql performance

Какой тип индекса необходимо добавить, чтобы ускорить поиск? Нужно ли нам немного заботиться об этом для повышения производительности?

ответ

3

Если при поиске Вы имеете в виду вы будете выполнять запрос так:

SELECT * from cars WHERE car LIKE '%{search_str}%' 

Тогда я боюсь, что даже если добавить ключ к MySQL car колонок все равно придется выполнить полный дуплекс сканирование, и ваш запрос может сильно замедлить работу.

Если вы планируете поддерживать значительный объем данных для поиска и ожидать высоких чисел qps, я бы рекомендовал вам ознакомиться с проектом Apaches Lucene, который может значительно ускорить выполнение любого поискового запроса. Кроме того, он также поддерживает полнотекстовый поиск.

1

Как говорит ducky, если вы собираетесь запрашивать столбец с помощью SQL LIKE, запрос будет очень медленным, независимо от того, какой индекс вы помещаете в столбец.

Там же 2 варианта:

  • Переключение в MyISAM базы данных вместо InnoDB и использовать полнотекстовый поиск по этой колонке. Это делается путем размещения индекса «полный текст» в столбце. More Information.
  • Используйте инструмент, такой как Lucene для полнотекстового поиска