Мгновенный поиск требует много вычислительной мощности? - PullRequest
3 голосов
/ 15 сентября 2010

Мне было интересно, вызовет ли мгновенный поиск с использованием jQuery огромную нагрузку на базу данных (MySQL). Я знаю, что нужно учитывать множество факторов, но, ради аргумента, скажем, у вас есть 30 000 записей для просмотра?

Ответы [ 4 ]

4 голосов
/ 15 сентября 2010

Индексация

Индексирование помогает, но индексирование также замедляет операторы INSERT / UPDATE / DELETE ...

MySQL также ограничивает объем пространства, которое вы можете использовать для индексации столбцов в таблице , и это зависит от типа движка:

  • MyISAM : 1000 байтов
  • InnoDB : 767 байт

Типы данных

Выберите правильный тип данных для задания.
Не так давно я заметил, что вопрос о SO включал TEXT в качестве типа данных, но только с использованием ~ 100 символов. Они сообщили, что увидели, что время запроса уменьшилось до третьей десятой оригинала, когда они изменили тип данных на VARCHAR.

Оптимальный запрос

Имейте в виду, что подстановочный знак в левой части выражения LIKE делает индекс столбца бесполезным. Если вам нужен такой вид поиска, обратите внимание на использование полнотекстового поиска (FTS) с использованием собственного синтаксиса MATCH .. AGAINST MySQL или сторонней поддержки, такой как Sphinx. Трудно предложить более глубокое понимание, не видя запроса.

1 голос
/ 15 сентября 2010

Поиск по 30 000 записей в любой базе данных SQL должен быть очень быстрым, если таблицы правильно проиндексированы . Вы должны убедиться, что у вас есть полезные индексы для ваших запросов. Вы также можете рассмотреть возможность использования Полнотекстовая индексация .

0 голосов
/ 15 сентября 2010

Это зависит от того, как вы создали свою базу данных. Индексы будут иметь значение, и выбранные вами столбцы будут иметь значение. Последнее, что вы должны рассмотреть, это алгоритм поиска. Если вы просто используете фразу where или like для ключевых слов Let's, я думаю, что это будет хорошо, но если вы ищете большой контент, то, вероятно, вам следует рассмотреть возможность полнотекстового поиска MySQL.

0 голосов
/ 15 сентября 2010

Это зависит. Сколько запросов генерирует ваша реализация мгновенного поиска, чем простая модель поиска?

Большинство библиотек Javascript, которые я видел, которые делают это, на самом деле не пытаются выполнить запрос, если курсор не был неактивным в течение некоторого времени. Это приводит только к 3 - 4 раза большему количеству запросов, чем обычный поиск. Если вы действительно запустите поиск по каждому введенному символу, вам придется иметь дело с таким количеством запросов, сколько символов введено.

Это все сказанное, это полностью зависит от того, сколько работы вовлечено в запрос.

...