I need to run a "one-to-many" spatial join between two large and complex polygon layers. The problem is that the output saved to a file GeoDB results in a layer that is almost 1 TB in size and it takes hours to run. However, the only thing I really care about is the output of that attribute table itself, which has a separate row for each record in the join layer that each record in the target layer intersects with, along with needed attributes from both layers, and that is the only thing I need to generate various tabular summaries I need to run.
Does anyone know if there's a way to basically run a one-to-many spatial join, but only have it write the tabular results in the output, without any shapes? The shapes in this output are not useful for anything, and just take up a massive amount of space and probably add a lot to the processing time to write them all (hundreds of thousands).
Just adding an update to my own question that I think I may have figured out a couple of different tools that can accomplish this. One is the "Tabulate Intersection" tool, which basically outputs a table with a separate row for each type of value that records in the input layer intersect with in a second layer. If you use the unique record ID for each layer, it will essentially give you a table with a separate row for each record that overlaps in each layer. The only problem is that it won't output records as an intersection if they only touch but do not cross like a spatial join will. The other tool that could potentially work is the Generate Near Table utility, which I haven't tried yet. Presumably if you set a search distance of zero, it would also generate a table with a separate row for each record with every other record that is within a distance of zero, which is essentially the set of all records that touch or cross each other. The difference with the Tabulate Intersection tool is that you wouldn't be able to discern whether records cross or just touch if that is important; you'd only know it's one or the other I think.