|
|
|
Поиск дубликатов
|
|||
|---|---|---|---|
|
#18+
Необходимо выдать все записи, имеющие дубликаты в некоторых полях. Нарисовал Код: plaintext 1. и вот на табличке с ~20 тыс. висит собака уже с пол-часа... Plan PLAN SORT ((B NATURAL)) PLAN (A NATURAL) Adapted Plan PLAN SORT ((B NATURAL)) PLAN (A NATURAL) че где можно подкрутитЪ? _________________ "Hello, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 17:15 |
|
||
|
Поиск дубликатов
|
|||
|---|---|---|---|
|
#18+
http://www.ibase.ru/devinfo/deldupes.htm Индексы-то по полям у тебя есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 17:24 |
|
||
|
Поиск дубликатов
|
|||
|---|---|---|---|
|
#18+
Надо не так Надо вывести список количеств всех наименований и наложить условие, чтоб это количество превышало единицу что то типа select name from tbl group by name having count(name) > 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 17:24 |
|
||
|
Поиск дубликатов
|
|||
|---|---|---|---|
|
#18+
Прикольно получилось Получился твой подзапрос в скобках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 17:27 |
|
||
|
Поиск дубликатов
|
|||
|---|---|---|---|
|
#18+
А нет, не совсем count(*) это не то что count(name) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 17:28 |
|
||
|
Поиск дубликатов
|
|||
|---|---|---|---|
|
#18+
Roman Ignatiev Индексы-то по полям у тебя есть? да есть PK, тока ж, ессесно, не по этим полям... это идет ревизия перед конвертированием БД, и таких проверяемых полей... К каждому индекса прикручивать? _________________ "Hello, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 18:01 |
|
||
|
Поиск дубликатов
|
|||
|---|---|---|---|
|
#18+
Это уж сам смотри :) НАмек: можешь считать, что rdb$db_key проиндексирован ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 18:22 |
|
||
|
Поиск дубликатов
|
|||
|---|---|---|---|
|
#18+
Построй индекс по Certif.ObjectName и попробуй перепсать запрос заново с агрегатными функциями, по возможности, как тебе посоветовали: select ObjectName,MAX(...),MAX(...),... from Certif group by ObjectName having count(*)>1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 18:30 |
|
||
|
Поиск дубликатов
|
|||
|---|---|---|---|
|
#18+
лично я уверен, что в having использовать индекс невозможно. например, нужно же для каждого поля найти этот каунт, чтобы его с единицей стравнить - вот и натурал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 22:47 |
|
||
|
Поиск дубликатов
|
|||
|---|---|---|---|
|
#18+
feddлично я уверен, что в having использовать индекс невозможно. например, нужно же для каждого поля найти этот каунт, чтобы его с единицей стравнить - вот и натурал... Сначала по индексу делается group by, а потом для каждой записи набора который получился по тому же индексу делается count() который в having. Конечно эти два поцесса должны быть совмещены в целях оптимизации, и должены делатся за один проход по индексу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 11:01 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32421694&tid=1579138]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
199ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 535ms |

| 0 / 0 |
