Re: PostgreSQL vs ...

From
Andrew Lesnichenko (2:5020/400)
To
Tolik Tentser (2:5054/37.63)
Date
2005-01-27T09:58:32Z
Area
SU.DBMS
From: Andrew Lesnichenko <les@mts.ru>

Tolik Tentser wrote:

>  EP>>  А если сравнить. Сделать таблицу "Обработано" и помещать туда PK, для
>  EP>> обработанных документов насколько измениться производительность если
>  EP>> использовать not exists?
> 
>  VP> Опередил :) Только я помещал бы в таблицу только PK записей со
>  VP> статусом, отличным от "обработано".
> 
> Теперь предположим, что рабочих состояний у документа несколько.
> Но 99% документов имеют состояние "обработано"
> 
> И запросы идут по одному из нескольких рабочих состояний (введен, на 
> утверждении, ждет оплаты ...)
> 
> Будем на каждое состояние заводить по таблице?
> Или шаманить с набиением дополнительной таблицы несколькими состояниями?
> 
> И то и другое явно плохо, особенно, когда набор состояний меняется.

Использование индекса по статусу имеет смысл для всех состояний, кроме 
"обработано".

В случае с Oracle можно:

- Статус "обработано" - null. Учитывая, что записей с таким статусом 
подавляющее большинство, индекс по статусу будет маленьким.

- Если таблица предназначена в первую очередь для обработки очереди, то 
фактически статус является решающим полем и можно эту таблицу 
секционировать по этому полю. Получим 2 секции - "обработано" (большая и 
фактически - журнал) и все остальное (маленькая и для быстрого доступа к 
очереди).

-- 
Andrew Lesnichenko

Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5.3
 * Origin: Mobile TeleSystems (2:5020/400)
SEEN-BY: 50/203 520 450/159 186 451/30 452/25 100 454/9 455/15 461/33 43 74
SEEN-BY: 461/106 132 640 463/92 464/34 465/213 469/125 999 478/44 550/5068
SEEN-BY: 4614/20 4616/3 4625/8 9 4627/10 4635/4 1024 4651/25 4653/10 4657/50
SEEN-BY: 5000/76 5000 5001/50 211 5001 5002/5002 5003/34 5006/1 5007/1 5009/14
SEEN-BY: 5010/53 70 146 5011/13 5012/23 5015/4 28 5019/5 22 5020/52 104 115
SEEN-BY: 5020/118 128 133 150 175 201 362 371 400 545 639 642 715 755 758 780
SEEN-BY: 5020/794 892 894 902 921 968 982 1057 1100 1169 1200 1212 1234 1523
SEEN-BY: 5020/1604 1626 1642 1826 1835 1873 1922 1930 1992 2020 2200 2238 4400
SEEN-BY: 5020/4441 8383 12000 5022/5 128 5023/11 5025/750 5026/14 45 5029/32
SEEN-BY: 5030/69 115 195 217 382 436 473 556 611 920 966 1016 1900 5031/47
SEEN-BY: 5033/5 21 35 5034/8 5035/10 5036/1 13 5037/21 31 36 5041/4 5042/8 13
SEEN-BY: 5045/7 5049/157 5050/9 41 5051/15 35 5053/16 5054/1 8 9 10 28 35 37
SEEN-BY: 5054/45 50 63 5055/95 5056/16 5057/1 5058/24 77 5059/20 5060/88
SEEN-BY: 5061/15 5062/10 5063/41 51 5064/5 7 35 5066/18 5070/26 66 1222
SEEN-BY: 5071/22 5075/10 5079/49 5080/1003 5081/2 5082/6 5083/13 21 5084/32
SEEN-BY: 5093/4 27 5095/1 20 5100/113 6001/3 6009/1 6023/1 6033/2727 6045/7
PATH: 5020/400 4441 52 5054/1 37