"arcpy.da.Search" cursor does not accept "arcpy.Polygon" to be used for spatial filtering of features in large feature class.
For spatial filters, currently, you have to use "arcpy.management.SelectLayerByLocation", but for large datasets it creates large overheads, because:
- it creates temparay tables in database session
- it creates temporary indexes in database session
- it downloads matched features shape and oid fields from database
- it does not accept attribute filter, so it also downloads a lot of redundant data
- it uploads matched oid fields to database session
After all, you we can use "arcpy.da.Search", which appends filter with matching oids in database session.
This approach leads to many database operations. My idea is - just allow to pass "overlap_type", "select_features", "search_distance", "invert_spatial_relationship" parameters to "arcpy.da.Search" cursor and let database do filtering in one pass with attribute and spatial filters.