|
|
|
Дублирование строк
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, как проверить таблицу на наличие дублированных строк. Под дублированными строками подразумеваются те строки в которых различается только порядковый номер. Так вот хотелось бы чтобы результатом проверки был курсор в котором будут продублированные строки, ну и соответственно их дубликаты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 15:20 |
|
||
|
Дублирование строк
|
|||
|---|---|---|---|
|
#18+
Что такое tabDouble? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2006, 09:06 |
|
||
|
Дублирование строк
|
|||
|---|---|---|---|
|
#18+
air1Что такое tabDouble? Код: plaintext Алиас таблицы tabMain внутри конструкции Select-SQL. Если писать без "умолчаний", то Код: plaintext Почитайте HELP к команде SELECT-SQL в отношении опции FROM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2006, 11:18 |
|
||
|
Дублирование строк
|
|||
|---|---|---|---|
|
#18+
air1У меня в таблице около 200 тысяч записей. Пытаясь пойти по тому пути который представлен в примере Владимира Максимова, я жду около 5 минут, потом выхожу по ctrl+alt+del и у меня портится проект приходится его восстанавливать. Можно ли как нибудь оптимизировать пример под таблицу с большим количеством записей? Чтобы не плодить темы отвечу здесь. Проблема в том, что Вы задали слишком сложные критерии проверки. Ведь, насколько я понимаю, Вы перечислили в условии проверки вообще все поля, кроме порядкового номера. Если таких полей достаточно много и они не имеют индекса, то Вы и получите такие тормоза. Я бы советовал разбить проверку на несколько этапов: 1. В условие объединения (то, что в ON) включаются только те поля, по которым есть индекс. Получаем некоторую предварительную выборку, в которой есть дубли по индексным выражениям, но дублей по другим полям может и не быть. Такой запрос будет полностью оптимизирован и, следовательно, выполниться очень быстро. 2. Делаем выборку по этой выборке, но в условие ON уже включаем ВСЕ поля (кроме порядкового номера). Такое разбиение имеет смысл, если результатом первой выборки станет относительно небольшое количество записей. Тогда выборка даже по не оптимизированным условиям не займет много времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2006, 11:29 |
|
||
|
Дублирование строк
|
|||
|---|---|---|---|
|
#18+
Вот что я пишу: SELECT DISTINCT reestr.* ; FROM reestr ; INNER JOIN reestr reestrDouble ON reestr.cod_podr = reestrDouble.cod_podr ; AND reestr.recz <> reestrDouble.recz ; ORDER BY reestr.cod_podr Проверяю только по одному полу. Сейчас в таблице 11942 записи. Когда в командном окне выполняю этот запрос виснит все и могу выйти только по ctrl+alt+del ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 14:36 |
|
||
|
Дублирование строк
|
|||
|---|---|---|---|
|
#18+
Какая версия FoxPro? От какой версии FoxPro сама таблица reestr.dbf? Что возвращают функции ?CPCURRENT() ?CPDBF("reestr") Существуют ли индексы по полям cod_podr и recz ? Если такие индексы существуют, то в каком режиме сортировки они были созданы? Проверяется по IdxCollate(). Какой текущий режим сортировки ?SET("COLLATE") Чтобы не было ситуации "висит и все" попробуй сделать так: Код: plaintext 1. 2. 3. Настройка SYS(3054) покажет режим оптимизации при выполнении запроса, косвенному выяснению которого и были посвящены большинство выше заданных вопросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 15:40 |
|
||
|
Дублирование строк
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Какая версия FoxPro? От какой версии FoxPro сама таблица reestr.dbf? Что возвращают функции ?CPCURRENT() ?CPDBF("reestr") Существуют ли индексы по полям cod_podr и recz ? Если такие индексы существуют, то в каком режиме сортировки они были созданы? Проверяется по IdxCollate(). Какой текущий режим сортировки ?SET("COLLATE") Чтобы не было ситуации "висит и все" попробуй сделать так: Код: plaintext 1. 2. 3. Настройка SYS(3054) покажет режим оптимизации при выполнении запроса, косвенному выяснению которого и были посвящены большинство выше заданных вопросов. Версия - FoxPro9.0. ?CPDBF("reestr") равно 1251 ?CPCURRENT() равно 1251 Таблица для FoxPro9.0 родная ни откуда она не бралась. Индексы: COD_PODR regular COD_PODR recz regular recz Сортировка - ascending и по одному и по другому полю. ?SET("COLLATE") - MACHINE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 09:42 |
|
||
|
Дублирование строк
|
|||
|---|---|---|---|
|
#18+
По коду фс:Е должно пролететь и даже без индексоф прибей теги и занова их перестрой. ЗЫ и перед запросом SET TALK ON воткни, штоб видеть прогресс на фсякий случай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 10:18 |
|
||
|
Дублирование строк
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо кто помог у меня ве получилось!!! УРА ТОВАРИЩИ!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 12:06 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=277&tid=1592443]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 384ms |

| 0 / 0 |
