Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
посмотрел количество секций по трем первым буквам по фамилии - получается 9949 секций из них
5502 секции имеют количество вхождений < 10
2933 секции имеют количество вхождений от 10 и до 100
1374 секции имеют количество вхождений от 100 и до 1000
140 секций имеют количество вхождений > 1000

макс количество вхождений -5725 на комбинации "Кар"
17 май 09, 22:26    [7190798]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34591

sp wrote:

> SELECT top(*50*)
> Persons.*
> FROM
> Persons
> INNER JOIN RusF ON Persons.RusFID = RusF.RusFID
> INNER JOIN RusI ON Persons.RusIID = RusI.RusIID
> INNER JOIN RusO ON Persons.RusOID = RusO.RusOID
> where
> RusF.RusF = 'Бударин' and RusI.RusI = 'Вадим' and RusO.RusO = 'Валерьевич'
>
> Запрос выполнялся 2мин 45сек
>
> Запрос только с RusF.RusF = 'Бударин' - 9сек
> запрос с RusF.RusF = 'Бударин' and RusI.RusI = 'Вадим' - 2мин 36сек

Так у вас в таком виде только по одному из трёх полей может быть поиск.
Вам надо переписать его так :

SELECT top(50) p.*
FROM Persons p
WHERE
p.RusFID = (select RusFID from RusF where RusF = 'Бударин' )
and p.RusIID = (select RusIID from RusI where RusI.RusI = 'Вадим' )
and p.RusOID = (select RusOID from RusO where RusO.RusO = 'Валерьевич')

и проверьте по плану запроса, чтобы он делал все три скалярных агрегата
сначала, а потом делал позиционирование по индексу с тремя полями.
Кстати, где у вас индекс по ([RusFID][RusIID][RusOID]) ? надеюсь,
что он есть.

Posted via ActualForum NNTP Server 1.4

17 май 09, 23:40    [7190956]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
MasterZiv

Так у вас в таком виде только по одному из трёх полей может быть поиск.
Вам надо переписать его так :

SELECT top(50) p.*
FROM Persons p
WHERE
p.RusFID = (select RusFID from RusF where RusF = 'Бударин' )
and p.RusIID = (select RusIID from RusI where RusI.RusI = 'Вадим' )
and p.RusOID = (select RusOID from RusO where RusO.RusO = 'Валерьевич')

и проверьте по плану запроса, чтобы он делал все три скалярных агрегата
сначала, а потом делал позиционирование по индексу с тремя полями.
Кстати, где у вас индекс по ([RusFID][RusIID][RusOID]) ? надеюсь,
что он есть.


Спасибо - после создания индекса [RusFID][RusIID][RusOID] все залетало
18 май 09, 01:17    [7191080]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
а как можно ускорить такой запрос?
	select top(50)
		p.*
	from
		dbo.Persons p
		inner join dbo.RusF rf on rf.RusFID = p.RusFID
		inner join dbo.RusI ri on ri.RusIID = p.RusIID
		inner join dbo.RusO ro on ro.RusOID = p.RusOID
		inner join dbo.UkrF uf on uf.UkrFID = p.UkrFID
		inner join dbo.UkrI ui on ui.UkrIID = p.UkrIID
		inner join dbo.UkrO uo on uo.UkrOID = p.UkrOID		
	where
		(
		 (rf.RusF like 'Будар%' and 
		  ri.RusI like '%' and
		  ro.RusO like '%')
		 
		 or
		 
		 (uf.UkrF like 'Будар%' and 
		  ui.UkrI like '%' and
		  uo.UkrO like '%') 
		)

я создал индек по полям ([RusFID][RusIID][RusOID][UkrFID][UkrIID][UkrOID]) но всеравно запрос выполняется 13сек вместо 1-2сек в случае использования одного из условий OR
18 май 09, 02:54    [7191157]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
и это 13 секунд если Имя и Отчество = %, а если там буквы - то можно идти обедать
18 май 09, 03:02    [7191158]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
sp
и это 13 секунд если Имя и Отчество = %, а если там буквы - то можно идти обедать
Попробуйте переделать запрос на UNION ALL.
18 май 09, 03:09    [7191161]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
Senya_L
sp
и это 13 секунд если Имя и Отчество = %, а если там буквы - то можно идти обедать
Попробуйте переделать запрос на UNION ALL.


UNION ALL не подходит в данном случае - он дает дубликаты и его нужно еще оборачивать в подзапрос чтоб отсортировать
18 май 09, 03:37    [7191168]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
sp,

Просмотрел Ваш топик. ИМХО, напрасно Вы "замутили" с этими справочниками имен и фамилий.
А по поводу ускорить... Это надо планы смотреть, но с этим в профильный форум. Кстати, а индекс по [UkrFID][UkrIID][UkrOID] имеется?
18 май 09, 04:03    [7191179]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
Senya_L
sp,

Просмотрел Ваш топик. ИМХО, напрасно Вы "замутили" с этими справочниками имен и фамилий.
А по поводу ускорить... Это надо планы смотреть, но с этим в профильный форум. Кстати, а индекс по [UkrFID][UkrIID][UkrOID] имеется?


Это почему напрасно замутил?
Вы пробовали с такими данными работать? если б попробовали - не говорили такое
Вы имеете в виду "замутили" разбиение на отдельные таблицы Фамилий Имен и Отчеств? ну тогда Вам в первый класс поучиться арифметике - толи иметь 52миллиона записей длиной 20+15+30
+ плюс индекс немалого размера то ли имеем 3 таблички с кол-вом записей 1.5 миллиона - вот типерь и посчитайте зря или не зря
Потом немного потренируйтесь такую базу бэкапить и обслуживать, а потом можете чтонить конкретное сказать

Естественно и [UkrFID][UkrIID][UkrOID] и [UkrFID][UkrIID][UkrOID] + фильты по русским ID есть
18 май 09, 05:22    [7191197]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
sp,

"Первый класс, если попробовали...". Буйствовать решили? Ню-ню...
автор
Потом немного потренируйтесь такую базу бэкапить и обслуживать, а потом можете чтонить конкретное сказать
Знаете, я не только пробовал. :)
А вот по Вашим пОстам создается впечатление, что Вы действуете методом научного тыка и опыта у Вас маловато.

Ну что ж, удачи.
18 май 09, 08:26    [7191265]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
Senya_L
sp, "Первый класс, если попробовали...". Буйствовать решили? Ню-ню...
автор
Потом немного потренируйтесь такую базу бэкапить и обслуживать, а потом можете чтонить конкретное сказать
Знаете, я не только пробовал. :) А вот по Вашим пОстам создается впечатление, что Вы действуете методом научного тыка и опыта у Вас маловато. Ну что ж, удачи.
Интересно - вы ничего конкретного не предложили, а просто обозвали все мои попытки разобраться в проблеме (да опыта у меня не достаточно - иначе этот форум никому не нужен был вааще) и я оказываеться еще и буяню !? - Это известный прием у гопников - "Эй чувак, дай закурить" - "Я не курю...." - "Это ты кого казлом обозвал!!!???" ))
Модератор: Тема перенесена из форума "Проектирование БД".


Сообщение было отредактировано: 18 май 09, 08:45
18 май 09, 08:33    [7191276]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
ветерочек
Member

Откуда: СПБ
Сообщений: 153
sp
Есть большая база данных ФИО - около 50 млн
очень уж тяжелая - поэтому подумываю создать справочники Фамилий, Имен и Отчеств и связать их с основной таблицей

Встает вопрос: что практичней и лучше (меньше по объему, быстрее по доступу, удобней для доступа)?

Спасибо за мнения

а сколько там разных Фамилий, Имен , Отчеств?
скорее всего лучше сделать справочники, хотя идея с индексом на вычисляемое поле тоже интересная...
18 май 09, 08:51    [7191302]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
ветерочек
Member

Откуда: СПБ
Сообщений: 153
ветерочек
sp
Есть большая база данных ФИО - около 50 млн
очень уж тяжелая - поэтому подумываю создать справочники Фамилий, Имен и Отчеств и связать их с основной таблицей

Встает вопрос: что практичней и лучше (меньше по объему, быстрее по доступу, удобней для доступа)?

Спасибо за мнения

а сколько там разных Фамилий, Имен , Отчеств?
скорее всего лучше сделать справочники, хотя идея с индексом на вычисляемое поле тоже интересная...

не увидел что есть 2 и 3 страницы
во-первых зачем BIGINT?
2.PK на -[dbo].[RusO]([RusO],[RusOID]) кластерный а [RusOID] - уникальный индекс он понадобится что бы сделать FK на [dbo].[Persons] или
индексы [dbo].[Persons] на [RusFID] и[RusIID]и[RusOID] некластерные, неуникальные.
18 май 09, 09:06    [7191335]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
sp
Интересно - вы ничего конкретного не предложили...
Как это не предложил?
Senya_L
А по поводу ускорить... Это надо планы смотреть, но с этим в профильный форум
И, как видите, модератор форума с этим согласен и перенес Ваш топик.

Вам ничего обидного не сказал, когда написАл
Senya_L
sp,

Просмотрел Ваш топик. ИМХО, напрасно Вы "замутили" с этими справочниками имен и фамилий.
Я сам никогда не нормализовал столбцы ФИО и это было лишь моими сомнениями, и имхо проставил. Вы же по сути ответили в стиле "сам некомпетентный дурак". Разве нельзя было ответить обоснованно: за счет справочников у меня настолько-то уменьшилась таблица, я получил такую-то выгоду...

ЗЫ. С таким болезненным самолюбием и нетерпимостью к критике на форумы ходить вообще вредно для нервов.
18 май 09, 09:18    [7191369]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
ветерочек
ветерочек
sp
Есть большая база данных ФИО - около 50 млн
очень уж тяжелая - поэтому подумываю создать справочники Фамилий, Имен и Отчеств и связать их с основной таблицей

Встает вопрос: что практичней и лучше (меньше по объему, быстрее по доступу, удобней для доступа)?

Спасибо за мнения

а сколько там разных Фамилий, Имен , Отчеств?
скорее всего лучше сделать справочники, хотя идея с индексом на вычисляемое поле тоже интересная...

не увидел что есть 2 и 3 страницы
во-первых зачем BIGINT?
2.PK на -[dbo].[RusO]([RusO],[RusOID]) кластерный а [RusOID] - уникальный индекс он понадобится что бы сделать FK на [dbo].[Persons] или
индексы [dbo].[Persons] на [RusFID] и[RusIID]и[RusOID] некластерные, неуникальные.


1.bigint - это скорее всего с препуго :)
2.спасибо - так о ключах и значениях я даже и не мог подумать да и в книжках почемуто не пишут, а если и пишут то наверно так глубоко прячут и вспоминают вскользь один раз :)

Спасибо за дельные советы!!!
18 май 09, 13:00    [7192817]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
ветерочек
ветерочек
sp
Есть большая база данных ФИО - около 50 млн
очень уж тяжелая - поэтому подумываю создать справочники Фамилий, Имен и Отчеств и связать их с основной таблицей

Встает вопрос: что практичней и лучше (меньше по объему, быстрее по доступу, удобней для доступа)?

Спасибо за мнения

а сколько там разных Фамилий, Имен , Отчеств?
скорее всего лучше сделать справочники, хотя идея с индексом на вычисляемое поле тоже интересная...

не увидел что есть 2 и 3 страницы
во-первых зачем BIGINT?
2.PK на -[dbo].[RusO]([RusO],[RusOID]) кластерный а [RusOID] - уникальный индекс он понадобится что бы сделать FK на [dbo].[Persons] или
индексы [dbo].[Persons] на [RusFID] и[RusIID]и[RusOID] некластерные, неуникальные.


да но я же забыл, мне уникальный нужен был индекс на Фамилию, Имя и Отчество чтоб дубликатов не было - а как же теперь быть?
18 май 09, 13:03    [7192837]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
Senya_L
sp
Интересно - вы ничего конкретного не предложили...
Как это не предложил?
Senya_L
А по поводу ускорить... Это надо планы смотреть, но с этим в профильный форум
И, как видите, модератор форума с этим согласен и перенес Ваш топик.

Вам ничего обидного не сказал, когда написАл
Senya_L
sp,

Просмотрел Ваш топик. ИМХО, напрасно Вы "замутили" с этими справочниками имен и фамилий.
Я сам никогда не нормализовал столбцы ФИО и это было лишь моими сомнениями, и имхо проставил. Вы же по сути ответили в стиле "сам некомпетентный дурак". Разве нельзя было ответить обоснованно: за счет справочников у меня настолько-то уменьшилась таблица, я получил такую-то выгоду...

ЗЫ. С таким болезненным самолюбием и нетерпимостью к критике на форумы ходить вообще вредно для нервов.


Прошу прощения если погарачился - писал в 5 или 6 утра после трудной ночи борьбы с этим справочников, а вы тут - "муть" вот и не сдержался )
Про перенос это я попросил модераторов
18 май 09, 13:05    [7192852]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
ветерочек
Member

Откуда: СПБ
Сообщений: 153
sp

да но я же забыл, мне уникальный нужен был индекс на Фамилию, Имя и Отчество чтоб дубликатов не было - а как же теперь быть?

уникальных индексов может быть несколько :))
18 май 09, 13:06    [7192862]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
Кудряшка
Member

Откуда: Сидней
Сообщений: 2219
sp
да но я же забыл, мне уникальный нужен был индекс на Фамилию, Имя и Отчество чтоб дубликатов не было - а как же теперь быть?


Теоретически и даже практически ИМЯ, ФАМИЛИЯ и ОТЧЕСТВО неуникальны. Откройте простой телефонный справочник и Вы в этом легко убедитесь.
Так зачем же Вы его хотите уникальным сделать? :)
18 май 09, 13:08    [7192878]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
vino
Member

Откуда:
Сообщений: 1191
sp
а как можно ускорить такой запрос?

А что это за разделение таблиц на Укр и Рус? Вам же поиск нужен по всему множеству - вот и избавитесь от OR
18 май 09, 13:09    [7192885]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
vino
Member

Откуда:
Сообщений: 1191
Кудряшка правильно говорит, полные тезки часто встречаются, но это, видимо, и в Вашем случае разные люди
18 май 09, 13:11    [7192910]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
ветерочек
sp

да но я же забыл, мне уникальный нужен был индекс на Фамилию, Имя и Отчество чтоб дубликатов не было - а как же теперь быть?

уникальных индексов может быть несколько :))


да это я в курсе, просто хотел узнать ваше мнение - не сильно ли много будет индексов на табличку, не обременительно ли это для базы будет?
18 май 09, 13:24    [7193005]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
Кудряшка
sp
да но я же забыл, мне уникальный нужен был индекс на Фамилию, Имя и Отчество чтоб дубликатов не было - а как же теперь быть?


Теоретически и даже практически ИМЯ, ФАМИЛИЯ и ОТЧЕСТВО неуникальны. Откройте простой телефонный справочник и Вы в этом легко убедитесь.
Так зачем же Вы его хотите уникальным сделать? :)


чтобы уменьшить объем базы и тем самым увеличить скорость выполнения поиска
18 май 09, 13:25    [7193016]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
sp
Member

Откуда:
Сообщений: 3947
vino
Кудряшка правильно говорит, полные тезки часто встречаются, но это, видимо, и в Вашем случае разные люди


естественно разные - фактически это разные же люди! они в разных местах и в разное время родились !)
18 май 09, 13:27    [7193024]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: индекс по столбцу или создание справочника?  [new]
ветерочек
Member

Откуда: СПБ
Сообщений: 153
sp
ветерочек
sp

да но я же забыл, мне уникальный нужен был индекс на Фамилию, Имя и Отчество чтоб дубликатов не было - а как же теперь быть?

уникальных индексов может быть несколько :))


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

ну так это от таблицы зависит -
если данные редко меняются то необременительно .....
18 май 09, 13:27    [7193025]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить