powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Дублирование строк
11 сообщений из 11, страница 1 из 1
Дублирование строк
    #33513580
air1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста, как проверить таблицу на наличие дублированных строк. Под дублированными строками подразумеваются те строки в которых различается только порядковый номер. Так вот хотелось бы чтобы результатом проверки был курсор в котором будут продублированные строки, ну и соответственно их дубликаты
...
Рейтинг: 0 / 0
Дублирование строк
    #33513594
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Дублирование строк
    #33514968
air1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое tabDouble?
...
Рейтинг: 0 / 0
Дублирование строк
    #33515348
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
air1Что такое tabDouble?

Код: plaintext
... INNER JOIN tabMain tabDouble ...

Алиас таблицы tabMain внутри конструкции Select-SQL. Если писать без "умолчаний", то

Код: plaintext
... INNER JOIN tabMain AS tabDouble ...

Почитайте HELP к команде SELECT-SQL в отношении опции FROM
...
Рейтинг: 0 / 0
Дублирование строк
    #33515399
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
air1У меня в таблице около 200 тысяч записей. Пытаясь пойти по тому пути который представлен в примере Владимира Максимова, я жду около 5 минут, потом выхожу по ctrl+alt+del и у меня портится проект приходится его восстанавливать. Можно ли как нибудь оптимизировать пример под таблицу с большим количеством записей?
Чтобы не плодить темы отвечу здесь.

Проблема в том, что Вы задали слишком сложные критерии проверки. Ведь, насколько я понимаю, Вы перечислили в условии проверки вообще все поля, кроме порядкового номера. Если таких полей достаточно много и они не имеют индекса, то Вы и получите такие тормоза.

Я бы советовал разбить проверку на несколько этапов:

1. В условие объединения (то, что в ON) включаются только те поля, по которым есть индекс. Получаем некоторую предварительную выборку, в которой есть дубли по индексным выражениям, но дублей по другим полям может и не быть. Такой запрос будет полностью оптимизирован и, следовательно, выполниться очень быстро.

2. Делаем выборку по этой выборке, но в условие ON уже включаем ВСЕ поля (кроме порядкового номера).

Такое разбиение имеет смысл, если результатом первой выборки станет относительно небольшое количество записей. Тогда выборка даже по не оптимизированным условиям не займет много времени.
...
Рейтинг: 0 / 0
Дублирование строк
    #33519096
air1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что я пишу:
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
...
Рейтинг: 0 / 0
Дублирование строк
    #33519388
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая версия FoxPro?

От какой версии FoxPro сама таблица reestr.dbf?

Что возвращают функции

?CPCURRENT()
?CPDBF("reestr")


Существуют ли индексы по полям cod_podr и recz ?

Если такие индексы существуют, то в каком режиме сортировки они были созданы? Проверяется по IdxCollate().

Какой текущий режим сортировки

?SET("COLLATE")


Чтобы не было ситуации "висит и все" попробуй сделать так:

Код: plaintext
1.
2.
3.
SYS( 3054 , 11 )  && эта настройка появилась только в VFP6
SET TALK ON
SELECT ...

Настройка SYS(3054) покажет режим оптимизации при выполнении запроса, косвенному выяснению которого и были посвящены большинство выше заданных вопросов.
...
Рейтинг: 0 / 0
Дублирование строк
    #33520908
air1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ Какая версия FoxPro?

От какой версии FoxPro сама таблица reestr.dbf?

Что возвращают функции

?CPCURRENT()
?CPDBF("reestr")


Существуют ли индексы по полям cod_podr и recz ?

Если такие индексы существуют, то в каком режиме сортировки они были созданы? Проверяется по IdxCollate().

Какой текущий режим сортировки

?SET("COLLATE")


Чтобы не было ситуации "висит и все" попробуй сделать так:

Код: plaintext
1.
2.
3.
SYS( 3054 , 11 )  && эта настройка появилась только в VFP6
SET TALK ON
SELECT ...

Настройка SYS(3054) покажет режим оптимизации при выполнении запроса, косвенному выяснению которого и были посвящены большинство выше заданных вопросов.


Версия - FoxPro9.0.
?CPDBF("reestr") равно 1251
?CPCURRENT() равно 1251
Таблица для FoxPro9.0 родная ни откуда она не бралась.

Индексы:
COD_PODR regular COD_PODR
recz regular recz

Сортировка - ascending и по одному и по другому полю.

?SET("COLLATE") - MACHINE
...
Рейтинг: 0 / 0
Дублирование строк
    #33521019
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По коду фс:Е должно пролететь и даже без индексоф
прибей теги и занова их перестрой.
ЗЫ и перед запросом SET TALK ON воткни, штоб видеть прогресс на фсякий случай
...
Рейтинг: 0 / 0
Дублирование строк
    #33521536
air1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем большое спасибо кто помог у меня ве получилось!!! УРА ТОВАРИЩИ!!!
...
Рейтинг: 0 / 0
Дублирование строк
    #33522267
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так в чем причина-то была тормозов?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Дублирование строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]