powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / самый быстрый способ найти не уникальные значения.
13 сообщений из 13, страница 1 из 1
самый быстрый способ найти не уникальные значения.
    #38561164
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ситуация - имеем индекс уникальности uniq_index(field1,field2)

как в этом случае написать запрос(самый еффективный вариант)
для получения списка не уникальных значений по полю field1

предполагаем что ситуация гдето такая.
записей пол милиарда, возможно там есть 10-50 записей имеющие двойника, может даже ктото тройника.

Код: sql
1.
select field1 from table group by field1 having count(*) >1;



прямой вариант , но интуитивно чувсвую, что не самый эффективный.
...
Рейтинг: 0 / 0
самый быстрый способ найти не уникальные значения.
    #38561171
попробовать уйти в сторону JOIN-а или [not]exists-подзапроса. чтобы не группировать весь миллиард записей...
...
Рейтинг: 0 / 0
самый быстрый способ найти не уникальные значения.
    #38561205
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453
Код: sql
1.
select field1 from table group by field1 having count(*) >1;




прямой вариант , но интуитивно чувсвую, что не самый эффективный.А я бы предложил посмотреть план этого запроса. Если он будет использовать индекс, то он должен быть эффективным.
...
Рейтинг: 0 / 0
самый быстрый способ найти не уникальные значения.
    #38561211
retvizan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эх,
Имхо, это будет дольше. В обоих вариантах придется пройти весь миллиард записей и для каждой проверять соответствие.
...
Рейтинг: 0 / 0
самый быстрый способ найти не уникальные значения.
    #38561221
retvizan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftА я бы предложил посмотреть план этого запроса. Если он будет использовать индекс, то он должен быть эффективным.Ну, да. Тс не уточнил, что индекс b-tree.
Или вы подразумеваете, что возможна ситуация при которой в случае b-tree не будет использован индекс для данного запроса?
...
Рейтинг: 0 / 0
самый быстрый способ найти не уникальные значения.
    #38561229
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
retvizanИли вы подразумеваете, что возможна ситуация при которой в случае b-tree не будет использован индекс для данного запроса?Ничего особенного я не подразумеваю, просто надо проверить. Попадались случаи странного поведения оптимизатора в подобных случаях.
...
Рейтинг: 0 / 0
самый быстрый способ найти не уникальные значения.
    #38561342
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453ситуация - имеем индекс уникальности uniq_index(field1,field2)

как в этом случае написать запрос(самый еффективный вариант)
для получения списка не уникальных значений по полю field1

предполагаем что ситуация гдето такая.
записей пол милиарда, возможно там есть 10-50 записей имеющие двойника, может даже ктото тройника.

Код: sql
1.
select field1 from table group by field1 having count(*) >1;



прямой вариант , но интуитивно чувсвую, что не самый эффективный.

как вариант для проверки скорости: NOT EXISTS
...
Рейтинг: 0 / 0
самый быстрый способ найти не уникальные значения.
    #38561348
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... скорее просто EXISTS

select * from tbl T1
WHERE EXISTS
(select 1
FROM tbl T2
where условия двойника
AND T1.ID != T2.id)
...
Рейтинг: 0 / 0
самый быстрый способ найти не уникальные значения.
    #38561401
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc,

смелее даём варианты...

счас закончиться генерация случайных данных для базы, там будет под 10млн записей.

попробую, отпишу.

ну и генератор запущу на создание ещо 490млн записей
...
Рейтинг: 0 / 0
самый быстрый способ найти не уникальные значения.
    #38561410
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453javajdbc,

смелее даём варианты...


мне кажется, это не тот случай, где может быть много нормальный вариантов запроса по вашему заданию
...
Рейтинг: 0 / 0
самый быстрый способ найти не уникальные значения.
    #38561423
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453javajdbc,

смелее даём варианты...

счас закончиться генерация случайных данных для базы, там будет под 10млн записей.

попробую, отпишу.

ну и генератор запущу на создание ещо 490млн записей

Смелость -- дело хорошее, но на милионных обьемах
легко можно сервер заморозить, как два байта переслать.
Я бы начал с 100К для начала, просто прошупать почву...
...
Рейтинг: 0 / 0
самый быстрый способ найти не уникальные значения.
    #38561859
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc... скорее просто EXISTS

Это вариант проверки не скорости, а силы тормозов. Nested Loop вместо одного прохода по индексу...
...
Рейтинг: 0 / 0
самый быстрый способ найти не уникальные значения.
    #38562102
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovjavajdbc... скорее просто EXISTS

Это вариант проверки не скорости, а силы тормозов. Nested Loop вместо одного прохода по индексу...

возможно, вы и правы, а может и нет.
клаву давить -- не мешки таскать.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / самый быстрый способ найти не уникальные значения.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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