I poked around but didn't see this addressed elsewhere - why is url_alias still indexed by a text string ('node/NID')? Every query to this table needs to concatenate a string value prior to the join, so joins are incredibly inefficient. I can understand needing a special case for non-node storage, but when making editorial tools, Views Bulk Operations, or even just large output sets, screen load / query times are just horrible when paths are included in the output.
It would be much better if url_alias had the same entity_type/entity_id/bundle fields that other tables did, or better still, used Entity API for its data storage. I'd even be willing to do this myself - but I wanted to check in with the community on acceptance / desire before starting it.
Comments
Comment #1
awm CreditAttribution: awm commentedI have a huge database. about 20 mill nodes. I was running a deletion script and was getting stuck at path_delete you would not believe how many rows have to be examined every time you delete a node because of this inefficient structure. I wanted to perform a query that translate to "delete * from url_alias where nid in [set of nids] " but I could not because of course "source/nid". I think this should be addressed as well and I am willing to participate.
Comment #14
smustgrave CreditAttribution: smustgrave at Mobomo commentedWonder if this is still desired for D10?