Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / самый быстрый способ найти не уникальные значения. / 13 сообщений из 13, страница 1 из 1
14.02.2014, 15:24:32
    #38561164
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
самый быстрый способ найти не уникальные значения.
ситуация - имеем индекс уникальности uniq_index(field1,field2)

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

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

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



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




прямой вариант , но интуитивно чувсвую, что не самый эффективный.А я бы предложил посмотреть план этого запроса. Если он будет использовать индекс, то он должен быть эффективным.
...
Рейтинг: 0 / 0
14.02.2014, 15:57:15
    #38561211
retvizan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
самый быстрый способ найти не уникальные значения.
Добрый Э - Эх,
Имхо, это будет дольше. В обоих вариантах придется пройти весь миллиард записей и для каждой проверять соответствие.
...
Рейтинг: 0 / 0
14.02.2014, 16:01:53
    #38561221
retvizan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
самый быстрый способ найти не уникальные значения.
miksoftА я бы предложил посмотреть план этого запроса. Если он будет использовать индекс, то он должен быть эффективным.Ну, да. Тс не уточнил, что индекс b-tree.
Или вы подразумеваете, что возможна ситуация при которой в случае b-tree не будет использован индекс для данного запроса?
...
Рейтинг: 0 / 0
14.02.2014, 16:05:52
    #38561229
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
самый быстрый способ найти не уникальные значения.
retvizanИли вы подразумеваете, что возможна ситуация при которой в случае b-tree не будет использован индекс для данного запроса?Ничего особенного я не подразумеваю, просто надо проверить. Попадались случаи странного поведения оптимизатора в подобных случаях.
...
Рейтинг: 0 / 0
14.02.2014, 17:25:51
    #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
14.02.2014, 17:28:22
    #38561348
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
самый быстрый способ найти не уникальные значения.
... скорее просто EXISTS

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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