What the buck? Are you serious?
What’s the point of having the post_name
column in wp_posts
???
What about get_permalink()?
Thread Starter
ivovic
(@ivovic)
that’s a good point actually, given that post_name field is there, it shouldn’t be pulling extra queries for each post.
I completely forgot about that field, so when you mentioned it I thought there obviously must be a reason it’s there.
That caused me to investigate further…
Interestingly… when I use the_permalink() on a page which pulls posts via query_posts, the_permalink() does NOT add additional queries for each post…. (though query_posts is quite heavy on queries itself, but not nearly as bad as doing one for each permalink)
however, when I run my own query on the posts table and use setup_postdata() on the result, so I can use functions like the_title, etc, the_permalink() runs a single query each time it’s called.
… even though $post->post_name is right there.
I can only assume it does that, in order to check heirachy… because the permalink can involve information about categories and subcategories etc.
In summary, it’s not as bad as I thought, but it’s still pretty bad.
I really only noticed now, while working on what I’m doing at the moment, because for each test post I displayed, 5 extra queries showed up.
Thread Starter
ivovic
(@ivovic)
ok… additional information.
Seems I was thinking along the right lines here….
my development site used a permalink structure which was /%category%/%postname% – so naturally wordpress would have to query the heirachy of my categories in order to display the permalinks.
I just tested this more thoroughly, and it seems that permalink structure is the root of all evil here.
when I change it to date-based permalinks, they’re much more predictable – and the information to construct them is readily available in the posts table, so the additional query isn’t required.
I also tested this with queries performed by wordpress internal functions like query_posts(), and it is also adversely affected by using /%category%/%postname% as the permalink structure.
In summary: /%category%/%postname% adds LOTS of extra query pressure on your blog, even for doing simple stuff.
OT: I was thinking about that in the shower.
Thread Starter
ivovic
(@ivovic)
Well, its good to have an answer – I don’t think I’m going to miss /%category%/%postname% very much. I’m not going to go back to date-based links, but I’ll certainly avoid the category heirachy.
At least I discovered this in development, before google crawled my site.
I want to note again for those skim-reading, it has nothing to do with internal or external functions, and everything to do with the permalink structure.