|
|
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Да, легко, скажи как узнать его и все напишу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:15:46 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
hitenokДа, легко, скажи как узнать его и все напишу.эх... SHOW CREATE TABLE имя_таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:16:38 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Я честно сознался в запроса и базах не силен, так что много просто не знаю, но готов делать, что надо. 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 аналогична этой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:20:00 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
я бы предложил создать индекс ALTER TABLE `test` ADD INDEX (`code`,`count`) для каждой из таблиц, сделать ANALYZE TABLE, аналогично, для каждой из таблиц и заново посмотреть на время и план запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:24:42 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Сделал, время примерно тоже самое, т.е. нет кардинальных изменений. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:28:20 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
hitenok, Странно, предлагаемый мной индекс не подхватился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:56:02 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Убрал индекс с 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 16:04:21 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
miksofthitenok, Странно, предлагаемый мной индекс не подхватился.Угу, непонятно... А можно еще раз SHOW CREATE TABLE имя_таблицы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 16:05:20 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 16:06:27 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 16:07:29 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Хммм... http://sqlfiddle.com/#!2/d2a11/2/0 Получается, что читать из покрывающего индекса для MySQL дороже, чем из таблицы? Или оптимизатор в первую очередь смотрит на длину ключа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 16:53:54 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Cygapb-007Хммм... http://sqlfiddle.com/#!2/d2a11/2/0 Там вообще забавно, для одной таблицы использует индекс code, для другой code_2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 17:05:03 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
miksoftдля одной таблицы использует индекс code, для другой code_2.Правильно, унарный минус... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 17:07:34 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
miksoftCygapb-007Хммм... http://sqlfiddle.com/#!2/d2a11/2/0 Там вообще забавно, для одной таблицы использует индекс code, для другой code_2.Да, потому что один закомментирован, а второй нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 17:07:43 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
хотя для code_2 в EXTRA указано: Using index вероятно, все же в этом случае за значением в таблицу не лезет... Но тогда тем более непонятно, почему самостоятельно выбирает code, а не code_2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 17:10:32 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Я не очень понимаю, о чем вы говорите, я чем могу помочь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 17:18:47 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Уфф, все верно про покрывающие индексы :) Только непонятно, почему они автоматом не выбираются... 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 18:11:15 |
|
||
|
|

start [/forum/topic.php?fid=47&startmsg=38401623&tid=1836024]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 347ms |

| 0 / 0 |
