I use symbology classes to display my data most of the time. I think I have noticed a performance hit when using symbol classes on large datasets, although it might just be in my mind.

That got me to wondering is it more efficient to 1) symbolize a single layer by categories or 2) create copies of the layer with definition queries in-place and symbolize them as a single symbol.

Setting up definition queries and setting their symbology would take time but I would do it if it gained a performance boost overall.

Also, looking at the second to last point in Best practices for using layer definition queries... I saw:

A definition query cannot be set on a system field while creating features

That would make me lean away from option 2 even if it does have better performance.

  • 4
    You can often improve performance by creating indexes on fields used by a query. – Kirk Kuykendall Apr 27 '16 at 17:58
  • 3
    Best way to do this is to try it and compare draw times. Since everything has to draw on the map no matter what you do (all things being equal), I would imagine you would see a performance hit using multiple layers with each having a definition query. – alexGIS Apr 27 '16 at 18:07
  • You can create multiple copies of a layer and use definition queries on those layers. And keep the main layer (without def queries) turned off, but do your creating onto that layer. I have this setup here and it works decent enough. – ed.hank Apr 27 '16 at 20:19
  • @ed.hankins yea thats what I was getting at with scenario #2. I'm leaning toward's Kirk's idea of indexing. If I understand him correctly he suggests using scenario #1 and creating an attribute index on the field I am symbolizing. – Barrett Apr 27 '16 at 21:14
  • Im curious if you got #1 working. My main point was even with def queries, you can create features on a the main (unqueried feature class) Good luck though, and please post your results here! – ed.hank Apr 27 '16 at 21:20

Try using the "Create "Index Grid Features" You can specify the size of the grid, and this way your data becomes indexed and can provide a performance boost when you have a large dataset like yours. Make sure you check this box as well: enter image description here

Now, all this will do is create a grid, so you can cut the polygons and join them to each grid.

Couple of links about the index here:

http://desktop.arcgis.com/en/arcmap/10.3/map/page-layouts/creating-grid-index-features.htm and http://help.arcgis.com/en%20/ArcGISDesktop/10.0/Help/index.html#//003n0000001r000000

Edit: Just saw Kirk answered in the comments :)

  • Does the Data Driven Pages create spatial index? I thought it simply made a grid for the data driven pages to use as areas to display. And is it a spatial index or attribute index that I need in this case? – Barrett Apr 27 '16 at 18:48
  • I would try Kirk's suggestion first by creating an attribute index. You are right about it simply making a grid, but you can join the attributes to it. It is not used solely for Data Driven Pages. Also, there is a tool called "Add Spatial Index" so you could try that as well, but I have never used it so I can't comment on it :) – Goldring Apr 27 '16 at 18:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.