[GIS] Adding data from a SQL Server Spatial database to ArcMap or ArcEngine application with ArcObjects for better performance

arcobjectsenterprise-geodatabaselarge datasetsquery-layersql server

I have an ArcSDE geodatabase stored in MS SQL Server 2008 R2. The datasets in this geodatabase range from 10 record to 7 million records and there is a mixture of tables and spatial datasets (SQL Geometry). All datasets are currently related via relationship classes.

It is nearly impossible to work with this data in ArcMap or via ArcObjects because the datasets are so large. ArcMap hangs when querying or getting related records. I tried query layers in ArcGIS 10 that query the SQL tables directly, but because these requery the database with every re-draw of the map or identify or attribute table change, the performance was still extremely slow.

Is there a way to query the SQL tables directly once and load the data into ArcMap as a layer?

Best Answer

7 million is not that big a number of records. The relationship classes are probably what are killing you. I would suggest two things. 1) For editing, use small area child replicas. This will greatly reduce the number of records needed while still giving you the capabilities you need from your relationship classes. 2) For viewing, start with a non-versioned read-only replica for viewing only. If that still is too poor of performance, then switch to a denormalized view. If this is a regularly edited database, the denormalized view will be a little trickier to maintain, but you will have dramatically improved performance at the cost of space. You might even be able to do spatially limited view only replicas like I recommended for editing, depending on the use pattern for your database. (Also, make sure your view-only clients are using feature caching.)

Related Question