Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
  #1  
Old 07-05-2004, 01:31 AM
Princeton's Avatar
Princeton Princeton is offline
 
Join Date: Nov 2001
Location: Vineland, NJ
Posts: 6,693
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default mysql question

Is there a better way to rewrite (optimize) this sql code? (NOTE: Some parts have been ommitted):
[sql]SELECT thread.threadid, thread.title, thread.postusername, thread.postuserid, thread.lastpost, forum.forumid
FROM thread AS thread
LEFT JOIN forum AS forum ON ( thread.forumid = forum.forumid )
WHERE thread.forumid
IN ( 25, 57, 223, 56, 88, 55, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 , 75, 76, 77, 78, 79, 80, 81, 89, 116, 178, 217, 218, 219, 220, 221, 222, 226, 231, 229, 227, 228, 230) AND thread.visible =1
ORDER BY lastpost DESC
LIMIT 16 [/sql]
The reason I ask is because it can take some time if rows > 50,000

thank you
Reply With Quote
  #2  
Old 07-05-2004, 01:41 AM
Zachery's Avatar
Zachery Zachery is offline
 
Join Date: Jul 2002
Location: Ontario, Canada
Posts: 11,440
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by princeton
Is there a better way to rewrite (optimize) this sql code? (NOTE: Some parts have been ommitted):
[sql]SELECT thread.threadid, thread.title, thread.postusername, thread.postuserid, thread.lastpost, forum.forumid
FROM thread AS thread
LEFT JOIN forum AS forum ON ( thread.forumid = forum.forumid )
WHERE thread.forumid
IN ( 25, 57, 223, 56, 88, 55, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 , 75, 76, 77, 78, 79, 80, 81, 89, 116, 178, 217, 218, 219, 220, 221, 222, 226, 231, 229, 227, 228, 230) AND thread.visible =1
ORDER BY lastpost DESC
LIMIT 16 [/sql]
The reason I ask is because it can take some time if rows > 50,000

thank you
Looks like get new or getdaily or just a search ?
Reply With Quote
  #3  
Old 07-05-2004, 05:03 PM
Xenon's Avatar
Xenon Xenon is offline
 
Join Date: Oct 2001
Location: Bavaria
Posts: 12,878
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

well, it's using an index and everything, so not much place to optimize.

but i see you are joining the forumtable, which is actually useless here, as you just want to get the forumid which is stored in the threadtable as well:

[sql]SELECT thread.threadid, thread.title, thread.postusername, thread.postuserid, thread.lastpost, thread.forumid
FROM thread AS thread
WHERE thread.forumid
IN ( 25, 57, 223, 56, 88, 55, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 , 75, 76, 77, 78, 79, 80, 81, 89, 116, 178, 217, 218, 219, 220, 221, 222, 226, 231, 229, 227, 228, 230) AND thread.visible =1
ORDER BY lastpost DESC
LIMIT 16 [/sql]

if you really need some foruminfos and just removed them in your query, then i suggest to use two queries.

sometimes two queries can be much faster then a big one, especially if joins are in the game
Reply With Quote
  #4  
Old 07-05-2004, 05:30 PM
Princeton's Avatar
Princeton Princeton is offline
 
Join Date: Nov 2001
Location: Vineland, NJ
Posts: 6,693
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

thanks Xenon - appreciate the input

I didn't think it would be possible to optimize but I thought I'd ask.

Oh yea - thanks for the new eyes regarding the "forumtable" ... I didn't even notice that. :up:

Zach,
If you are wondering what this is about ...
I'm fetching the last 16 threads from a specific section of my forum; and, this section has many sections.
Many sections + many threads = slow (it doubles my generation time)

Currently, my page is generated in .1 second with the above sql it will jump to .2 seconds.

I have thought of an alternative way to fetch the lastpost - going to try it out now.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 05:50 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03568 seconds
  • Memory Usage 2,181KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (4)post_thanks_box
  • (4)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (4)post_thanks_postbit_info
  • (4)postbit
  • (4)postbit_onlinestatus
  • (4)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • 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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete