|
|
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
Добрий день. Есть таблица: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. В нее вставляется 3328500 записей, через такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Время исполнения 24с Причем почти все время идет на INSERT а не на SELECT Если все зделать через OUTFILE, LOAD DATA INFILE: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Все ровно время будет 24с Этого я не понимаю, ведь время на запись на и считывание с диска должно бить по идее больше? Это первое... Второе, как максимально ускорить вставку в таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 14:22:37 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
denis111111Если все зделать через OUTFILE, LOAD DATA INFILE:denis111111Все ровно время будет 24сИзмерьте каждую часть по-отдельности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 14:29:15 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
denis111111, И покажите план SELECT-а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 14:30:27 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
miksoftИзмерьте каждую часть по-отдельности. select 0.016 с вставка INTO OUTFILE 'D:\mon_results_help_1' 19с LOAD DATA INFILE 14 количество записей для вставки 3804000 Что-то select быстро делается очень miksoftИ покажите план SELECT-а.. idselect_typetabletypepossible_keyskeykey_lenrefrowsextra'1' 'SIMPLE' 'b' 'ALL' 'kgip_type kgip common' NULL NULL NULL '669233' 'Using where''1' 'SIMPLE' 'a' 'ref' 'kgip_type kgip common' '10' 'poiskserver.b.kgip_typepoiskserver.b.kgip' '4' 'Using where; Using index' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 15:03:43 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
denis111111select 0.016 с вставка INTO OUTFILE 'D:\mon_results_help_1' 19сЭто как-это? Как вы смогли их отдельно измерить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 15:04:49 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
miksoft, Просто cделал select без insert. Это можно еще как нибудь сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 15:09:30 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
denis111111miksoft, Просто cделал select без insert. Это можно еще как нибудь сделать?Похоже, что вы измерили не время SELECT, а время выдачи первых записей. А полный SELECT отрабатывает как раз примерно за 19 с. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 15:11:14 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 15:12:02 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
denis111111, И покажите DDL таблицы poiskserver.kgips, включая индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 15:12:03 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
denis111111 Код: sql 1. Я бы предложил другой индекс (`kgip_type`, `kgip`, `removed`, `company`) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 15:13:15 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
miksoft, Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 15:18:36 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
denis111111miksoft, Почему?Потому что поле company проверяется на неравнество. Насколько я в курсе, MySQL не умеет перебирать ветки индекса (в вашем варианте это ветки с полями `company`, `removed`), если не знает точное их количество. Т.е. проверку removed=0 по такому индексу он произвести не сможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 15:27:21 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
miksoft, Как бы там не было выборка и так быстрая... Так как при join используется common ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 15:32:45 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
denis111111выборка и так быстраяЧто-то не похоже, судя по 19 секундам. denis111111Так как при join используется commonСудя по представленному плану - нет. Впрочем, в нем явно есть ошибки копирования, так что точно судить не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 15:56:26 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
miksoftdenis111111выборка и так быстраяЧто-то не похоже, судя по 19 секундам. denis111111Так как при join используется commonСудя по представленному плану - нет. Впрочем, в нем явно есть ошибки копирования, так что точно судить не могу. Да, я плохо скопировал. Ну вот смотрите: виборка и вставка 19с Если делать только выборку, без вставки, то время что-то 0.012с Как это понимать? query_cache_type = 0 , тож это не с кеша. Или в workbench какая то хитрая логика ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 16:11:35 |
|
||
|
insert в memory table
|
|||
|---|---|---|---|
|
#18+
denis111111, Все таки если заигнорить все индексы IGNORE INDEX(common, kgip , kgip_type) то тогда действительно долго) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 16:16:49 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=47&tid=1833037]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
96ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 438ms |

| 0 / 0 |
