Выборка объемных данных

  • Автор темы Автор темы DeMx
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Есть много-много записей (50 тысяч сейчас и в будущем, возможно,
больше) в двух таблицах и нужно проводить из них выборки (с поиском по
некоторым полям).
Могу посоветовать, попробуйте выполнить данный запрос на другом сервере, например под MS SQL или уж на BDE на крайний случай, но скорее всего, разницы во времени не будет. С такой реализацией базы прийдётся Вам обрабатывать всё программно, хотя и это не будет быстро, но по крайней мере можно будет прогресс бар показать.

На самом деле 50 000 записей это вообще ничто для нормально спроектированной БД. Напряги начинаются где-то с 1 000 000. :)
 
Если поля строковые, то предлагаю сделать индекс ОТДЕЛЬНО на m.login ,e.emale,m.id,e.id
и не обЪединять индекс. Нормально работает и со 100000 записей. А если полный перебор двух таблиц, то поделите на 2-3 запроса по какому-нибудь принципу( по начальной букве например), индекс лучше сработает ,это уже пройдено на практике.
 
<!--QuoteBegin-ooo+17:11:2006, 10:05 -->
<span class="vbquote">(ooo @ 17:11:2006, 10:05 )</span><!--QuoteEBegin-->Если поля строковые, то предлагаю сделать индекс ОТДЕЛЬНО на m.login ,e.emale,m.id,e.id
и не обЪединять индекс.
[snapback]48074" rel="nofollow" target="_blank[/snapback]​
[/quote]
Так это и так понятно, ведь поля объединяются по OR, а не по AND
 
При чем тут OR Или AND??? Просто если захотите использовать поиск по контексту, то индекс из нескольких строчных полей потеряет смысл, а отдельные индексы подойдут в самый раз. Индекс выбирается не по OR или AND , а по наиболее частой стыковке по = и по процентному содержанию его к полному перебору базы. Поэтому иногда запрос на полную базу приходится делать как объединение (UNION) 2-3 запросов ,поделенных по индексированным полям. Уменьшая процент выборки-убыстряем работу индекса.
 
<!--QuoteBegin-ooo+17:11:2006, 12:50 -->
<span class="vbquote">(ooo @ 17:11:2006, 12:50 )</span><!--QuoteEBegin-->При чем тут OR Или AND???
[snapback]48104" rel="nofollow" target="_blank[/snapback]​
[/quote]
Я к тому, что если бы две таблицы объединялись по условию
Код:
ON m.login = e.email AND m.id = e.id
то составной индекс дал бы выигрыш в производительности
 
Попробовал индексы сделать раздельные... Все равно не помогло.

Знаете, я уже всякую надежду потерял... :)
 
А чего её терять.. базу редизайнить надо ... имея запорожец трудно заставить его ездить как Макларен F1... извините за каламбур...
 
По любому нужны раздельные индексы

С индексами я уже прошел... создавал индексы типа full-text для связующих полей - не помогло. Пробовал даже добавить уникальное поле с auto_increment - тоже ничего не дало.

FULLTEXT индексы не подойдут. Они используются для поиска слов и словосочетаний в больших наборах текста с учетом релевантности. А тут задача немного другая.
Я думаю здесь надо создать строковые индексы по префиксу. Подробнее

З.Ы. Хотя базу редизайнить всеже стоит =)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!