|
|
|
Экспорт данных из 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 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. жесть адовая... а если так? Код: sql 1. 2. 3. 4. 5. 6. 7. А лучше покажите explain этого запроса здесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2016, 10:45 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Дык у него нету индекса kartkvgd(lic_sch, yearmon), всё одно тухло будет. И в среднем по 23 записи в группе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2016, 10:54 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Akina, новые таблички они поменьше будут картаб_аскуэ Код: 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. таблица картквгд_аскуэ Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2016, 14:03 |
|
||
|
Экспорт данных из 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2016, 14:08 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
через explain Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2016, 14:10 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
tanglirolegon7 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. жесть адовая... а если так? Код: sql 1. 2. 3. 4. 5. 6. 7. А лучше покажите explain этого запроса здесь. хорошо а как вытянуть остальные поля таблицы karkvgd такие как data_new? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2016, 14:55 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
tanglir, написал запрос по вашей рекомендации Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. запрос конечно выполнился быстрее Но во-первых он дублирует записи лицевой счет должен быть уникальным (в картабе он уникальный) во-вторых как вытащить поле data_new ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2016, 15:32 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
Вам для каждого счёта надо выбрать последнюю дату и относящееся к ней значение data_new? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. И сделайте всё-таки индекс на (lic_sch,yearmon), если есть возможность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 04:39 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
tanglir, Для каждого счета последнюю оплату , но учитывайте что последние оплаты для каждого счета разные, и привязанную к ней оплату data_new. И еще в картабе хранятся lic_sch уникальные а в картвгд нет, т е по сути там хранятся оплаты абонентов за 3 года! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 07:40 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7но учитывайте чтоНу кагбэ вчитайтесь в запрос, там это учтено. Правда, если у вас в "последнюю" дату могут быть две оплаты , то ой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 07:44 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
tanglir, запрос вернул более 120 тыс ,что удивительно все записи ермон одинаковые(такого быть не может что бы все лплатитлт в один день)! хотя в картабе 50 тыс это говорит о том что соединять надо не только по лиц счету а и по дате ермон...поэтому исправляю Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. В запросе все равно что не так поля yearmon и data_new заполнены одинаковыми значениями, хотя должны быть разные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 09:27 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7В запросе все равно что не так поля yearmon и data_new заполнены одинаковыми значениямитак потому что берутся они из одной и той же записи Глаз у меня замылился, когда писал, а вы, похоже, вообще не поняли, что запрос делает. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Ну и olegon7запрос вернул более 120 тыс потому что в нём оставался уже ненужный джойн с картквгд. Странно, что больше не вернул. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 10:29 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
tanglir, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. этот запрос выполняется за 9 секунд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 10:31 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
tanglir, вы когда так соединяете вы получаете избыточные записи Код: sql 1. я жк писал lic_sch уникален в картаб но не в картвгд! поэтому соединять надо еще и по ермону и тогда строить индекс составной lic_sch_ya_yearmon ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 10:46 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7вы когда так соединяете вы получаете избыточные записииногда лучше жевать, чем говорить (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 11:03 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7и тогда строить индекс составной lic_sch_ya_yearmonАкина вам это уже предлагал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 11:04 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
tanglir, еще один написал запрос он куда проще и выполняется быстрее Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 11:20 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
и тогда учитываются даже те записи когда ермон повторяется уважаемый tanglir объяните почему правое соединение быстрее работает чем левое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 11:22 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7, при левом соединении сервер идёт по таблице лиц.счетов и ищет каждому соответствие в результате подзапроса. Поскольку на этом результате нет индексов, скорость немного предсказуема. Ваш правый джойн есть не что иное как внутренний джойн (читать секцию where до просветления). Тут сервер имеет право выбирать, какой набор дынных делать ведущим, и естественно выбирает ведущим подзапрос. При этом поиск в таблице счетов производится по индексу, что, очевидно, на порядки быстрее, чем в предыдущем варианте. Впрочем, даже если бы это был честный правый джойн, результат остался бы тем же - скан подзапроса, поиск в счетах по индексу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 11:31 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
ЗЫ. У счёта может быть максимум одна операция оплаты за календарный месяц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 11:33 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
tanglir, ну сне все таки надо делать левое соединение т. е . ведущая таблица картаб - должны все записи попасть , из картвдг только те которые совпадают по лиц счету ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 13:18 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
как сделать запрос что бы скорость была бы такой же но при этом ведущая таблица была бы картаб, я так понимаю проиндексировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 13:42 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
tanglir, написал запрос Код: 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. по сути добавил еще один вложенный(таблица картаб т3) чтобы проиндексировалась. но запрос все равно выполняется долговато - 25 минут( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 15:40 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
tanglir, могу ли я этот запрос разложить на подзапросы и запихнуть во вьюхи и сохранить на сервере? а потом через 1 с главную вьюху вызывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 08:41 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
tanglir, очень долго выполняется((( я так понимаю нужны индексы я не админю мускл не подскажите как правильно построить индексы составные можно ли построить через navicat? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 14:27 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
вот экплейн Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2016, 14:33 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7можно ли построить через navicat?если есть права, то можно создать через что угодно гуглите alter table add index ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2016, 17:01 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
tanglir, ваш запрос выполнялся 59548 секунд или 16 часов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 08:33 |
|
||
|
Экспорт данных из Mysql в 1 c
|
|||
|---|---|---|---|
|
#18+
olegon7, но индекс построился? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 09:52 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1831927]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
154ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
95ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 549ms |

| 0 / 0 |
