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

  • Автор темы DeMx
  • Дата начала
Статус
Закрыто для дальнейших ответов.
L

LAW

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

На самом деле 50 000 записей это вообще ничто для нормально спроектированной БД. Напряги начинаются где-то с 1 000 000. :)
 
O

ooo

Если поля строковые, то предлагаю сделать индекс ОТДЕЛЬНО на m.login ,e.emale,m.id,e.id
и не обЪединять индекс. Нормально работает и со 100000 записей. А если полный перебор двух таблиц, то поделите на 2-3 запроса по какому-нибудь принципу( по начальной букве например), индекс лучше сработает ,это уже пройдено на практике.
 
E

European

<!--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
 
O

ooo

При чем тут OR Или AND??? Просто если захотите использовать поиск по контексту, то индекс из нескольких строчных полей потеряет смысл, а отдельные индексы подойдут в самый раз. Индекс выбирается не по OR или AND , а по наиболее частой стыковке по = и по процентному содержанию его к полному перебору базы. Поэтому иногда запрос на полную базу приходится делать как объединение (UNION) 2-3 запросов ,поделенных по индексированным полям. Уменьшая процент выборки-убыстряем работу индекса.
 
E

European

<!--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
то составной индекс дал бы выигрыш в производительности
 
D

DeMx

Попробовал индексы сделать раздельные... Все равно не помогло.

Знаете, я уже всякую надежду потерял... :)
 
B

Barmutik

А чего её терять.. базу редизайнить надо ... имея запорожец трудно заставить его ездить как Макларен F1... извините за каламбур...
 
D

DikMax

По любому нужны раздельные индексы

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

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

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

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