powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчет разницы между двумя таблицами
18 сообщений из 43, страница 2 из 2
Подсчет разницы между двумя таблицами
    #38401623
hitenok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, легко, скажи как узнать его и все напишу.
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401626
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hitenokДа, легко, скажи как узнать его и все напишу.эх...
SHOW CREATE TABLE имя_таблицы
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401634
hitenok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я честно сознался в запроса и базах не силен, так что много просто не знаю, но готов делать, что надо.

CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`code` int(11) NOT NULL,
`count` int(5) NOT NULL,
`created` timestamp NOT NULL default CURRENT_TIMESTAMP,
UNIQUE KEY `id` (`id`),
KEY `code` (`code`),
KEY `count` (`count`)
) ENGINE=InnoDB AUTO_INCREMENT=274242 DEFAULT CHARSET=utf8

таблица demo аналогична этой.
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401641
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы предложил создать индекс ALTER TABLE `test` ADD INDEX (`code`,`count`) для каждой из таблиц, сделать ANALYZE TABLE, аналогично, для каждой из таблиц и заново посмотреть на время и план запроса.
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401650
hitenok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал, время примерно тоже самое, т.е. нет кардинальных изменений.

Код: plaintext
1.
2.
3.
4.
id	select_type	table		type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY		<derived2>	ALL	NULL		NULL	NULL	NULL	202	Using temporary; Using filesort
2	DERIVED		test		index	NULL		code	4	NULL	292976	 
3	UNION		demo		index	NULL		code	4	NULL	249253	 
NULL	UNION RESULT	<union2,3>	ALL	NULL		NULL	NULL	NULL	NULL
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401698
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hitenok,

Странно, предлагаемый мной индекс не подхватился.
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401714
hitenok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Убрал индекс с count и code в обоих таблицах, твой подхватился, но стало гораздо медленнее.

id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 202 Using temporary; Using filesort
2 DERIVED test index NULL code_2 8 NULL 357884 Using index
3 UNION demo index NULL code_2 8 NULL 314322 Using index
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401718
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofthitenok,

Странно, предлагаемый мной индекс не подхватился.Угу, непонятно...
А можно еще раз SHOW CREATE TABLE имя_таблицы ?
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401721
hitenok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`code` int(11) NOT NULL,
`count` int(5) NOT NULL,
`created` timestamp NOT NULL default CURRENT_TIMESTAMP,
UNIQUE KEY `id` (`id`),
KEY `code_2` (`code`,`count`)
) ENGINE=InnoDB AUTO_INCREMENT=361379 DEFAULT CHARSET=utf8
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401723
hitenok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CREATE TABLE `demo` (
`id` int(11) NOT NULL auto_increment,
`code` int(11) NOT NULL,
`count` int(5) NOT NULL,
`created` timestamp NOT NULL default CURRENT_TIMESTAMP,
UNIQUE KEY `id` (`id`),
KEY `code_2` (`code`,`count`)
) ENGINE=InnoDB AUTO_INCREMENT=317929 DEFAULT CHARSET=utf8
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401813
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хммм... http://sqlfiddle.com/#!2/d2a11/2/0

Получается, что читать из покрывающего индекса для MySQL дороже, чем из таблицы?

Или оптимизатор в первую очередь смотрит на длину ключа?
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401829
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007Хммм... http://sqlfiddle.com/#!2/d2a11/2/0 Там вообще забавно, для одной таблицы использует индекс code, для другой code_2.
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401834
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftдля одной таблицы использует индекс code, для другой code_2.Правильно, унарный минус...
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401835
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftCygapb-007Хммм... http://sqlfiddle.com/#!2/d2a11/2/0 Там вообще забавно, для одной таблицы использует индекс code, для другой code_2.Да, потому что один закомментирован, а второй нет
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401841
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя для code_2 в EXTRA указано: Using index
вероятно, все же в этом случае за значением в таблицу не лезет...

Но тогда тем более непонятно, почему самостоятельно выбирает code, а не code_2
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401855
hitenok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не очень понимаю, о чем вы говорите, я чем могу помочь?
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401965
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уфф, все верно про покрывающие индексы :) Только непонятно, почему они автоматом не выбираются...

Test = 393381 строк, Demo = 270341 строк http://sqlfiddle.com/#!2/0d10cb/3

Key(Code): Record Count: 4; Execution Time: 2045ms
Key(Code,Count): Record Count: 4; Execution Time: 451ms
Код: sql
1.
2.
3.
4.
5.
6.
7.
select code, sum(count)count
from(
  select code, sum(count) count from test use index(code_2) group by code
  union all
  select code,-sum(count) count from demo use index(code_2) group by code
  )u
group by code;
...
Рейтинг: 0 / 0
Подсчет разницы между двумя таблицами
    #38401977
hitenok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, все верно, работает быстрее. Огромное спасибо!
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчет разницы между двумя таблицами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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