View Single Post
  #42  
Old 04-23-2004, 04:52 PM
FASherman's Avatar
FASherman FASherman is offline
 
Join Date: Aug 2002
Posts: 289
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Here's an example of what I mean. Lets say you're looking for a list of threads, but at the same time, you want to know what the name (not id) of the forum they're in, the test from the first post in that thread and the actual image url for that post's icon.

You COULD, as I have seen other code do, grab the thread info and for each row of thread info query the post, forum and icon tables. If you're grabbing 10 threads, thats 31 queries. WAY INEFFICIENT!

The right way to do it is with a single query and compounded left joins. Here is an example:

SELECT vb_thread.votenum, vb_thread.votetotal, vb_thread.replycount, vb_thread.threadid, vb_thread.iconid, vb_thread.title, vb_thread.postusername, vb_thread.lastposter, vb_thread.dateline, vb_icon.iconpath, vb_post.pagetext, vb_forum.title as forumtitle FROM vb_thread LEFT JOIN vb_icon ON (vb_thread.iconid=vb_icon.iconid) LEFT JOIN vb_post on (vb_thread.firstpostid=postid) LEFT JOIN vb_forum ON (vb_thread.forumid=vb_forum.forumid) WHERE vb_thread.forumid=$SEARCHFORUM ORDER BY sticky DESC, vb_thread.dateline DESC LIMIT 10

You are correct. I can't speak for the stock NUKE modules. But this is how MY code works. I take the time to make the most efficient use of the database that I possibly can.

Remember, I'm a Texan and this ain't my first rodeo.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01171 seconds
  • Memory Usage 1,762KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete