I have a python script that built database relates in ArcMap in a filegeodatabase. They are many-to-many relates between three tables using a relationship table in the middle. This is the design from the source in PostGIS that I want to replicate. The keys between the tables are indexed integer fields. This all worked well in ArcMap and building the relates took a few minutes.
Now in ArcGISPro the same script takes many hours! What has happened?
[As a side-issue, BigInteger keys cause a crash, they must be 32 bit Integers]
The tables are medium sized, typically 2M records. Note that you cannot rename any tables afterwards, you have to rebuild from scratch. All tables must be in the same filegeodatabase. The relation table built is a semi-hidden table, hard to delete in a script.
Has anyone else noticed this? Do you have any suggestions to restore the speed? Maybe remove the indexes before building the relates and re-creating afterwards.
What version of Pro are you working with?
Do you have a test computer that you can install ArcGIS Pro 3.1 on and see how these relates worked before BigInteger was introduced as I believe that data type was introduced in Pro 3.2?
Good idea, but how will it help? I really should look up some logs to see how long it took in ArcMap. Since Esri have turned off my licence for the Pro downgrade I cannot run it now. I really just want normal speed. I have got rid of any BigInteger and BigObjectID fields ( well you have to or CreateRelation() crashes).
April 2024 ArcMap:
--------------------
Build relates 10:34sec (expected time!!)
Rebuild CoraxPro Relates
Process: Table To Relationship Class... lgp rel_parcel_legal
Process: Table To Relationship Class... afp rel_parcel_plan
Process: Table To Relationship Class... title_rel rel_parcel_title
Process: Table to Relationship Class... sap rel_gazette_detail
Building sap_rel...
Process: Relationship Class... sta-sap rel_parcel_gazette
Building sta_rel...
Process: Relationship Class... sta-ste rel_gazette_act
Building ste_rel...
Process: Create Relationship Class... nmi_rel rel_title_name
licence is ArcInfo
Process: Table To Relationship Class... lgp rel_parcel_legal
Process: Table To Relationship Class... afp rel_parcel_plan
Process: Table To Relationship Class... title_rel rel_parcel_title
Process: Table to Relationship Class... sap rel_gazette_detail
Process: Relationship Class... sta-sap rel_parcel_gazette
Process: Relationship Class... sta-ste rel_gazette_act
Process: Create Relationship Class... nmi_rel rel_title_name
Python error in nmi "Nominal_Index" does not exist
Well Done 0:13:58.288000
\0
Feb 2025 ArcGISPro same script upgraded for Python 3.....
========================================================
Build relates 10:34sec expected
Rebuild CoraxPro Relates
Process: Table To Relationship Class... lgp rel_parcel_legal
Process: Table To Relationship Class... afp rel_parcel_plan
ERROR: Failed to execute. Parameters are not valid.
ERROR 000800: The value is not a member of abey_prior_status | cadastral_surv_acc | certified_date | chf_sur_amnd_date | data_source | dataset_id | dataset_series | dataset_suffix | description | dlr_amnd_date | et_created | et_edited | OBJECTID | registered_date | splan | survey_class | survey_date | surveyor_data_ref | type_of_dataset | usr_id_sol.
Failed to execute (TableToRelationshipClass).
Process: Table To Relationship Class... title_rel rel_parcel_title
Process: Table to Relationship Class... sap rel_gazette_detail
Building sap_rel...
Process: Relationship Class... sta-sap rel_parcel_gazette
Building sta_rel...
Process: Relationship Class... sta-ste rel_gazette_act
Building ste_rel...
Process: Create Relationship Class... nmi_rel rel_title_name
Building nmi_rel...
licence is ArcInfo
Failed to execute. Parameters are not valid.
ERROR 000800: The value is not a member of abey_prior_status | cadastral_surv_acc | certified_date | chf_sur_amnd_date | data_source | dataset_id | dataset_series | dataset_suffix | description | dlr_amnd_date | et_created | et_edited | OBJECTID | registered_date | splan | survey_class | survey_date | surveyor_data_ref | type_of_dataset | usr_id_sol.
Failed to execute (TableToRelationshipClass).
Start Time: Friday, 23 February 2024 7:52:46 pm
Failed to execute. Parameters are not valid.
ERROR 000800: The value is not a member of et_created | et_edited | OBJECTID | original_flag | purpose | share | status | term | timeshare_week_no | ttl_title_no | type.
Failed to execute (TableToRelationshipClass).
Failed at Friday, 23 February 2024 7:52:46 pm (Elapsed Time: 0.06 seconds
==================================================================
Well Done 2:46:45.2 WHAT? and if the field widths are fixed it's 5 hours!
Note failures are due to BigIntegers that have crept in, I have now realised.