powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / select * меньше, чем select distinct
9 сообщений из 9, страница 1 из 1
select * меньше, чем select distinct
    #40101398
tdslava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Возможно, нубский вопрос, объясните, пожалуйста, почему так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT product_id FROM oc_product
Отображение строк 0 - 24 (80231 всего, Запрос занял 0.0002 сек.)

SELECT DISTINCT product_id FROM oc_product
Отображение строк 0 - 24 (81241 всего, Запрос занял 0.0002 сек.)

SELECT DISTINCT product_id FROM oc_product WHERE product_id not in (SELECT product_id FROM oc_product)
MySQL вернула пустой результат (т.е. ноль строк). (Запрос занял 0.0582 сек.)

Из того что знаю о distinct - результат должен быть равным или меньшим.
таблицу оптимизировал, до этого разница была еще больше.
...
Рейтинг: 0 / 0
select * меньше, чем select distinct
    #40101400
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdslava,

> таблицу оптимизировал...

имеется в виду выполнялся
Код: plaintext
optimize table
?

Встречный нубский вопрос: в таблицу запись не ведется?

Что вернет:
Код: sql
1.
select count(product_id) cnt_all, count(distinct product_id) cnt_dist from oc_product
...
Рейтинг: 0 / 0
select * меньше, чем select distinct
    #40101423
tdslava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, оптимайз

cnt_allcnt_dist8124181241
...
Рейтинг: 0 / 0
select * меньше, чем select distinct
    #40101424
tdslava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
постоянно ведется. Строки удаляются и добавляются
...
Рейтинг: 0 / 0
select * меньше, чем select distinct
    #40101446
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что мешает выполнить
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE t1 (product_id TEXT);
CREATE TABLE t2 LIKE t1;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
START TRANSACTION;
SELECT product_id INTO t1 FROM oc_product;
SELECT DISTINCT product_id INTO t2 FROM oc_product;
COMMIT;


и только потом сравнивать?
...
Рейтинг: 0 / 0
select * меньше, чем select distinct
    #40101567
tdslava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
делал так:
Код: plaintext
1.
2.
3.
4.
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
START TRANSACTION;
INSERT INTO t1(product_id) SELECT `product_id` FROM oc_product;
INSERT INTO t2(product_id) SELECT DISTINCT product_id FROM oc_product;
COMMIT;

При выполнении:
Код: plaintext
1.
2.
3.
4.
5.
Добавлена 81241 строка. (Запрос занял 0.2552 сек.)
INSERT INTO t1(product_id) SELECT `product_id` FROM oc_product

Добавлена 81241 строка. (Запрос занял 0.3400 сек.)
INSERT INTO t2(product_id) SELECT DISTINCT product_id FROM oc_product

По результату:
Код: plaintext
1.
2.
3.
4.
5.
Отображение строк 0 - 24 (81370 всего, Запрос занял 0.0003 сек.)
SELECT * FROM `t1`

 Отображение строк 0 - 24 (81241 всего, Запрос занял 0.0002 сек.)
SELECT * FROM `t2`

Снова не стыкуется...
...
Рейтинг: 0 / 0
select * меньше, чем select distinct
    #40101568
tdslava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может, это глюк phpmyadmin?
...
Рейтинг: 0 / 0
select * меньше, чем select distinct
    #40101608
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdslava,

Проверьте так:
Код: sql
1.
2.
SELECT COUNT(*) FROM `t1`
SELECT COUNT(*) FROM `t2`


У меня есть подозрение, что число в скобках - оценка на основе статистики, а не реально вычисленное количество.
...
Рейтинг: 0 / 0
select * меньше, чем select distinct
    #40101710
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdslava,

если запросы выполняются в одной транзакции (serializable) - результаты похожи на правду: distinct равен общему числу строк.

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


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