|
|
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Всем привет! Я 1с -ник , с субд mysql знаком относительно. Стоит задача перенести данные из mysql на 1 с. В 1 с использую код, работая через драйвер Connection = Новый COMОбъект("ADODB.CONNECTION"); Попытка Connection.Open(" |DRIVER={MySQL ODBC 5.1 Driver}; |SERVER=******; |DATABASE=*****; |UID=*****; |PWD=******"); Исключение Сообщить("Ошибка соединения:"+ОписаниеОшибки()); Возврат; КонецПопытки; Connection.Execute("Запрос1"); Connection.Execute("Запрос2"); Connection.Execute("Запрос3"); Также имеется база mysql в ней 2 таблицы kartab -картотека абонентов 536000 записей структура таблицы id int(10) unsigned NO PRI auto_increment lic_sch varchar(16) NO PRI fam varchar(64) YES name varchar(64) YES otch varchar(64) YES cod_tn varchar(8) YES cod_st varchar(8) YES home varchar(10) YES kv varchar(10) YES kom int(5) YES chlenov int(5) YES telef varchar(16) YES cod_kat varchar(16) YES cod_tpr varchar(16) YES schlamp int(1) YES rabot int(1) YES shifr varchar(15) YES cod_pd varchar(10) YES koment varchar(128) YES plit int(1) YES yearmon date YES errsum int(11) YES errsumn int(11) YES summa_kn int(11) YES summa_kc int(11) YES cod_con varchar(16) YES srednee int(11) YES mesyac int(11) YES date_otkpl date YES date_otkfk date YES nomer_tp varchar(16) YES fider varchar(11) YES nomer_opor varchar(16) YES smena varchar(16) YES data_kon int(11) YES date_kon date YES familiya varchar(64) YES pr_opl varchar(8) YES akt int(4) YES cod_pred varchar(8) YES date_zap date YES lgota varchar(4) YES procent varchar(11) YES date_dog date YES cod_isp varchar(8) YES rachpok int(10) YES pokazanie int(11) YES dkont decimal(7,2) YES date_r date YES date_lgt date YES reg_nom varchar(16) YES cod_tp varchar(6) YES date_pr date YES priravn int(6) YES dog varchar(8) YES penya_t int(11) YES askue int(1) YES summa_vd int(16) YES cod_vid int(4) YES lg_kvt int(11) YES errsumv int(11) YES kvt_mes int(11) YES summa_mes int(16) YES old_lgt int(1) YES deti int(1) YES pr_erip int(1) YES cod_alg varchar(11) YES n_sch varchar(32) YES MUL cod_tsch varchar(16) YES MUL fider_code varchar(32) YES tp_code varchar(32) YES line_code varchar(32) YES del int(1) YES base varchar(16) YES MUL kartkvgd - оплаты абонентов 12500000 записей id int(10) unsigned NO PRI auto_increment lic_sch varchar(16) YES MUL pachka varchar(10) YES yearmon date YES MUL err int(1) YES errsum int(11) YES ko int(4) YES data_old int(11) YES data_new int(11) YES razn_kn int(11) YES razn_kc int(11) YES kft_kn int(11) YES kft_kc int(11) YES tar_kn double(9,2) YES tar_kc double(9,2) YES summa_kn int(11) YES summa_kc int(11) YES penya_k double(10,2) YES komiss_k double(10,2) YES proc int(4) YES razn_rn int(11) YES razn_rc int(11) YES kft_rn double(10,5) YES kft_rc double(10,5) YES tar_rn double(10,2) YES tar_rc double(10,2) YES summa_rn double(10,2) YES summa_rc int(16) YES penya_r double(10,2) YES date_r date YES MUL primechanie varchar(64) YES norma int(11) YES familiya varchar(64) YES cod_opl int(8) YES prpen int(4) YES date_vd date YES time_vd varchar(0) YES reg_nom varchar(64) YES vyp_doh int(11) YES no int(11) YES raznpen int(11) YES del int(1) YES MUL base varchar(16) YES MUL Запросы работают ну очень медленно...что посоветуете спецы Запросами мне нужно выбрать всех абонентов из картаб с полями lic_sch data_kon date_kon base askue по этим лицевым счетам выбрать абонентов из картвгд по последней оплате yearmon с полями lic_sch data_new yearmon Естественно тут пакетами не обойтись..... Запрос1 Код: sql 1. 2. 3. 4. 5. 6. Запрос2 Код: sql 1. 2. 3. 4. 5. 6. 7. Запрос3 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Запросы выполняются ну очень медленно Посоветуйте как оптимизировать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 11:06 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7как оптимизировать ? Как минимум - создать необходимые индексы. Вероятно, собрать всё в один запрос. Вероятно - понять, какого хрена надо тянуть весь этот массив данных на клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 11:45 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Akinaolegon7как оптимизировать ? Как минимум - создать необходимые индексы. Вероятно, собрать всё в один запрос. Вероятно - понять, какого хрена надо тянуть весь этот массив данных на клиента. Я за субд не отвечаю индексы сделаны ....в описании таблиц указано по каким полям... Вложенные запросы быстрее выполнятся? Тянуть массив этот надо для последующей его обработки.... уже функциями 1с , создание отчетов и т д. У меня конкретно по структуре таблиц... как можно оптимизировать и по моим запросам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 11:51 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
AkinaВероятно, собрать всё в один запрос.Вот, да, это просится больше всего. Сейчас t2 является ведомой таблицей, однако по ней индексов нет. В итоге поиск записи в ней может происходит только полным сканированием таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 12:23 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7индексы сделаны ....в описании таблиц указано по каким полям...Не указано. Да и вообще это не описание структуры, а хрень собачья. olegon7Вложенные запросы быстрее выполнятся? Ну уж во всяком случае не медленнее. Тем более по сравнению с временными таблицами на дисковом движке. olegon7по структуре таблиц... как можно оптимизировать Интересно, зачем тебе это? особенно с учётом того, что olegon7Я за субд не отвечаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 12:32 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7по структуре таблиц... как можно оптимизировать Интересно, зачем тебе это? особенно с учётом того, что olegon7Я за субд не отвечаю[/quot] парень который отвечает за mysql я так понимаю тоже новичок а решаем общую задачу вот и спрашиваю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 13:18 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
[quot Akina]olegon7индексы сделаны ....в описании таблиц указано по каким полям...Не указано. Да и вообще это не описание структуры, а хрень собачья. Использовал команду DESCRIBE tablename; SHOW TABLE STATUS; для просмотра структуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 13:20 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
А надо было SHOW CREATE TABLE. Причём из консоли копипаст сюда. И обернуть тегом SRC=SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 13:24 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Так нагляднее Структура Таблицы kartkvgd fieldtypenullkeydefaultextraidint(10) unsignedNOPRIauto_incrementlic_schvarchar(16)YESMULpachkavarchar(10)YESyearmondateYESMULerrint(1)YESerrsumint(11)YESkoint(4)YESdata_oldint(11)YESdata_newint(11)YESrazn_knint(11)YESrazn_kcint(11)YESkft_knint(11)YESkft_kcint(11)YEStar_kndouble(9,2)YEStar_kcdouble(9,2)YESsumma_knint(11)YESsumma_kcint(11)YESpenya_kdouble(10,2)YESkomiss_kdouble(10,2)YESprocint(4)YESrazn_rnint(11)YESrazn_rcint(11)YESkft_rndouble(10,5)YESkft_rcdouble(10,5)YEStar_rndouble(10,2)YEStar_rcdouble(10,2)YESsumma_rndouble(10,2)YESsumma_rcint(16)YESpenya_rdouble(10,2)YESdate_rdateYESMULprimechanievarchar(64)YESnormaint(11)YESfamiliyavarchar(64)YEScod_oplint(8)YESprpenint(4)YESdate_vddateYEStime_vdvarchar(0)YESreg_nomvarchar(64)YESvyp_dohint(11)YESnoint(11)YESraznpenint(11)YESdelint(1)YESMULbasevarchar(16)YESMUL Структура Таблицы kartab fieldtypenullkeydefaultextraidint(10) unsignedNOPRIauto_incrementlic_schvarchar(16)NOPRIfamvarchar(64)YESnamevarchar(64)YESotchvarchar(64)YEScod_tnvarchar(8)YEScod_stvarchar(8)YEShomevarchar(10)YESkvvarchar(10)YESkomint(5)YESchlenovint(5)YEStelefvarchar(16)YEScod_katvarchar(16)YEScod_tprvarchar(16)YESschlampint(1)YESrabotint(1)YESshifrvarchar(15)YEScod_pdvarchar(10)YESkomentvarchar(128)YESplitint(1)YESyearmondateYESerrsumint(11)YESerrsumnint(11)YESsumma_knint(11)YESsumma_kcint(11)YEScod_convarchar(16)YESsredneeint(11)YESmesyacint(11)YESdate_otkpldateYESdate_otkfkdateYESnomer_tpvarchar(16)YESfidervarchar(11)YESnomer_oporvarchar(16)YESsmenavarchar(16)YESdata_konint(11)YESdate_kondateYESfamiliyavarchar(64)YESpr_oplvarchar(8)YESaktint(4)YEScod_predvarchar(8)YESdate_zapdateYESlgotavarchar(4)YESprocentvarchar(11)YESdate_dogdateYEScod_ispvarchar(8)YESrachpokint(10)YESpokazanieint(11)YESdkontdecimal(7,2)YESdate_rdateYESdate_lgtdateYESreg_nomvarchar(16)YEScod_tpvarchar(6)YESdate_prdateYESpriravnint(6)YESdogvarchar(8)YESpenya_tint(11)YESaskueint(1)YESsumma_vdint(16)YEScod_vidint(4)YESlg_kvtint(11)YESerrsumvint(11)YESkvt_mesint(11)YESsumma_mesint(16)YESold_lgtint(1)YESdetiint(1)YESpr_eripint(1)YEScod_algvarchar(11)YESn_schvarchar(32)YESMULcod_tschvarchar(16)YESMULfider_codevarchar(32)YEStp_codevarchar(32)YESline_codevarchar(32)YESdelint(1)YESbasevarchar(16)YESMUL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 13:46 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7Так нагляднее Муж, упорный в своих намерениях? ну тоже позиция, чё... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 13:56 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7Так нагляднееПоля-то нагляднее, а вот остальная часть информации так и осталась "за кадром". В т.ч. индексы, движки таблиц, счетчики автоинкрементов. Кстати, безотносительно вопроса топика - удивляют старательно расставленные разные числа у типа INT. Хотя они ни на что не влияют, диапазон значений и размер при хранении от этого не меняются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 14:00 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Akinaolegon7Так нагляднее Муж, упорный в своих намерениях? ну тоже позиция, чё... сейчас , таблица kartab Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. сейчас , таблица kartkvgd Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 14:04 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
запрос3 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. опечатался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 14:07 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7 Код: sql 1. 2. 3. 4. 5. 6. Код: sql 1. 2. 3. 4. 5. Мда-с... гениальненько... ну да хрен с им. На описанной структуре по запросам: Во втором запросе заменить левое связывание на внутреннее. Объединить все запросы в один. И сильно подумать - зачем данные разных уровней группировки получать в одном наборе записей. Скорее всего, более целесообразно получить от сервера два набора - отдельно MAX(kartkvgd.yearmon) и kartkvgd.lic_sch, отдельно всё остальное. И ещё более сильно подумать на предмет того, какой смысл волочь в 1С все 12кк записей для обработки, когда можно их обработать на MySQL и выдать в 1С уже обобщённые данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 14:16 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Akina, первый запрос возвращает всех абонентов(лицевые счета) с максимальной датой оплаты. еще забыл надо вставить условие del=0 т.е . неудаленные записи Код: sql 1. 2. 3. 4. 5. 6. 7. почему во втором запросе нужно испольльзовать внутреннее? мне ведь нужны все лицевые счета из первого запроса Получился вот такой запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 14:36 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
[/src][/quot] И ещё более сильно подумать на предмет того, какой смысл волочь в 1С все 12кк записей для обработки, когда можно их обработать на MySQL и выдать в 1С уже обобщённые данные.[/quot] Смысл в чем, раз в месяц я получаю данные из mysql записываю себе в 1 с делаю всевозможные проверки.... еще один источник данных - это сторонний http сервис - оттуда я тоже буду получать данные и клеить с полученными из mysql... делаю всевозможные отчеты для анализа данных.. делаю приложение , которое доступно всем пользователям в том числе через web интерфейс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 14:45 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Проблема осталась запрос больше часа выполняется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 15:00 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7почему во втором запросе нужно использовать внутреннее? НУ сам подумай. Есть таблица. Ты из неё отобрал часть записей. Может ли в отобранной части присутствовать запись, отсутствующая в исходной таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 15:09 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Akina, ты прав но запрос все равно долго выполняется может надо в структуре что-то поменять ничего что поле lic_sch строка и по ней индекс ? а это поле участвует у меня в соединениях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 15:22 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Запрос такой получился Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 15:24 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7ничего что поле lic_sch строка и по ней индекс ? а это поле участвует у меня в соединениях? Без индекса было бы совсем тухло. olegon7может надо в структуре что-то поменять Ну вообще-то надо. Даже без комментариев, в каком поле что хранится, ясно, что "архитектор" этой БД даже не слышал о существовании нормальных форм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 15:39 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Akina, если создать таблицу лицевые счета содержащая поля lic_sch(строка) и id_lic_sch (число) а в таблицы kartab и kartkvgd добавить поле id_lic_sch ? запрос быстрее выполнятся будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 16:48 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7Akina, если создать таблицу лицевые счета содержащая поля lic_sch(строка) и id_lic_sch (число) а в таблицы kartab и kartkvgd добавить поле id_lic_sch ? запрос быстрее выполнятся будет? и проиндексировать по id_lic_sch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 16:53 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7запрос быстрее выполнятся будет? Ненамного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 17:40 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Итоговый запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. оставил запрос на выполнение вернул ошибку [Err] 1317 - Query execution was interrupted ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2016, 08:34 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39207581&tid=1831927]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
20ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 326ms |

| 0 / 0 |
