Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Оптимальный подход к выборке  [new]
assmsk
Member

Откуда:
Сообщений: 25
Есть таблица A в которой есть 1 поле "name" varchar(20). В таблице 2млн строк.
В таблице В содержится это же поле + какие то дополнительные параметры.
Нужно получить все данные из таблицы В где поле "name" равно полю "name" из таблицы А.

Из за огромного размера таблицы В любой запрос который я пишу умирает, не дождался еще ни одного выполнения.
(Пс - Таблицу А могу проиндексировать, В возможности нет)

Варианты:

Select * from B inner join A on b.name = a.name

Select * from B where name in (Select name from A)

Select a.name,b.* from A inner join B on a.name = b.name


Ничего не выполняется, жду часами.
4 окт 17, 13:27    [20841936]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
assmsk
Member

Откуда:
Сообщений: 25
в таблице В 3 миллиарда строк
4 окт 17, 13:33    [20841979]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 3594
assmsk,

страдать. имхо индексное представление для B
4 окт 17, 13:35    [20841993]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
dao
Member

Откуда: Москва
Сообщений: 729
а в b поле какого типа?
конечно вырезать гланды через ж... но как разовый вариант "если очень надо"
1) привести привести varchar(20) в А в тип char(20) , повесить индекс
2) создать материализованое представление для В с конвертированием name тоже в char(20) и тоже повесить индекс

потом джоинить
4 окт 17, 13:45    [20842049]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 3594
dao
а в b поле какого типа?
конечно вырезать гланды через ж... но как разовый вариант "если очень надо"
1) привести привести varchar(20) в А в тип char(20) , повесить индекс
2) создать материализованое представление для В с конвертированием name тоже в char(20) и тоже повесить индекс

потом джоинить

а в char(20) для большей боли? или индексы на varchar перестали работать?
4 окт 17, 13:50    [20842078]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
assmsk
Member

Откуда:
Сообщений: 25
Соврал :)

В обеих таблицах по полю name есть индекс.
4 окт 17, 14:32    [20842286]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 4625
assmsk
Нужно получить все данные из таблицы В где поле "name" равно полю "name" из таблицы А.
попробовать
select ... from B where exists (select 1 from A where A.name = B.name)
с учётом
assmsk
(Пс - Таблицу А могу проиндексировать, В возможности нет)
4 окт 17, 14:32    [20842287]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 3594
assmsk
Соврал :)

В обеих таблицах по полю name есть индекс.

скрипт создания этих индексов
4 окт 17, 14:34    [20842294]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 5120
assmsk,

ничего там не поможет, при таком объеме будет просмотр хэша. Не будет же 2 миллиона лупов крутить. У вас селективность никакущая.
4 окт 17, 14:34    [20842296]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 5120
План запроса приложите.
4 окт 17, 14:35    [20842300]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
982183
Member

Откуда:
Сообщений: 916
assmsk
в таблице В 3 миллиарда строк

А физический объем на диске сколько?

А действительно надо "Select * from B ", или надо всё же применить некие агрегирующие функции?
4 окт 17, 14:46    [20842342]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
982183
Member

Откуда:
Сообщений: 916
А если у тебя в таблице А поле name не уникальное, то количество получившихся а запросе записей может сильно превышать количество записей в таблице В.
4 окт 17, 14:48    [20842354]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
assmsk
Member

Откуда:
Сообщений: 25
TaPaK
assmsk
Соврал :)

В обеих таблицах по полю name есть индекс.

скрипт создания этих индексов



В таблице A - UNIQUE NONCLUSTERED
В В - NONCLUSTERED
4 окт 17, 15:35    [20842575]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
assmsk
Member

Откуда:
Сообщений: 25
Владислав Колосов
План запроса приложите.


К сообщению приложен файл. Размер - 41Kb
4 окт 17, 15:41    [20842599]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
assmsk
Member

Откуда:
Сообщений: 25
982183
assmsk
в таблице В 3 миллиарда строк

А физический объем на диске сколько?

А действительно надо "Select * from B ", или надо всё же применить некие агрегирующие функции?



26 тб

Действительно
4 окт 17, 15:46    [20842617]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
assmsk
Member

Откуда:
Сообщений: 25
Еще момент, эти таблички на разных серверах
4 окт 17, 15:49    [20842635]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 4625
assmsk
Еще момент, эти таблички на разных серверах
выбирать данные из В на том сервере где она лежит предварительно прокинув туда уникальный набор name из А
4 окт 17, 15:58    [20842687]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 3594
assmsk
982183
пропущено...

А физический объем на диске сколько?

А действительно надо "Select * from B ", или надо всё же применить некие агрегирующие функции?



26 тб

Действительно

повторюсь - страдайте, архитектура = резултат
4 окт 17, 16:12    [20842745]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
assmsk
Member

Откуда:
Сообщений: 25
Все тип-топ))
Пару минут отрабатывает, сервак с большой таблицей лег оказывается
4 окт 17, 17:15    [20843005]     Ответить | Цитировать Сообщить модератору
 Re: Оптимальный подход к выборке  [new]
dao
Member

Откуда: Москва
Сообщений: 729
TaPaK
dao
а в b поле какого типа?
конечно вырезать гланды через ж... но как разовый вариант "если очень надо"
1) привести привести varchar(20) в А в тип char(20) , повесить индекс
2) создать материализованое представление для В с конвертированием name тоже в char(20) и тоже повесить индекс

потом джоинить

а в char(20) для большей боли? или индексы на varchar перестали работать?

таки не приходилось вам сравнивать большие массивы varchar'ов? ))
4 окт 17, 18:32    [20843258]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить