Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
  #1  
Old 05-07-2003, 03:37 PM
Tigga's Avatar
Tigga Tigga is offline
 
Join Date: Dec 2001
Location: Atlanta
Posts: 1,061
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Why does this query take so long??

Hopefully someone here can help me with this, because I'm about out of ideas.

I use the following query to pull the last 10 threads on pretty much every page on my site...
PHP Code:
SELECT
thread
.threadid,thread.title,replycount,postusername,postuserid,thread.dateline,views,lastposter,lastpost
    
".iif($showthreadicon,',thread.iconid as iconid,icon.title as icontitle,icon.iconpath as iconpath','')." 
    
FROM thread 
    
".iif ($showthreadicon,'LEFT JOIN icon ON icon.iconid=thread.iconid','')." 
    
WHERE open<>10 $iforumperms 
    ORDER BY thread
.lastpost DESC 
    LIMIT 10 
The problem with the speed seems to arise from the $iforumperms part, which ends up looking something like this:
PHP Code:
AND forumid=OR forumid=OR forumid=OR forumid=OR forumid=OR forumid=4... etc 
I added an index on the thread.lastpost column which helped with the speed, but only if I remove the $iforumperms part from the query. If I don't have the $iforumperms it takes about 0.001 seconds to execute that query, but when the $iforumperms part is added back in it takes closer to 0.4 seconds to load. I tried adding an index on the thread.forumid just incase, but that didn't help at all. Does anyone have any ideas of another way I could speed that up and keep the forum permissions as well? Any help would be much appreciated.
Reply With Quote
  #2  
Old 05-07-2003, 05:12 PM
LangTuDaTinh LangTuDaTinh is offline
 
Join Date: Dec 2001
Posts: 159
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

how many forums are included? the more forums ...the longer it takes to look for latest threads.
Reply With Quote
  #3  
Old 05-07-2003, 05:29 PM
amykhar's Avatar
amykhar amykhar is offline
 
Join Date: Oct 2001
Location: PA
Posts: 4,438
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Tigga, it honestly depends on how many forums you don't want to show. For example, on my board, I only have a few private forums that nobody should see. So, it might be more efficient for me to hard code those in instead of basing them on forumpermissions. Then, my query would say:

WHERE open<>10 $iforumperms and forumid not in (1,3,4)

That might help speed things up a bit. However, if you have a ton of forums that are only visible to select users, you might be stuck with the slower query.

Typically, I would simply exclude forums that guests shouldn't see and be happy with that and not worry that the latest private threads don't show up in the list.

Amy
Reply With Quote
  #4  
Old 05-07-2003, 05:30 PM
amykhar's Avatar
amykhar amykhar is offline
 
Join Date: Oct 2001
Location: PA
Posts: 4,438
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Also, I would personally kill the thread icon part and get rid of that join. But that's just a personal preference.

Amy
Reply With Quote
  #5  
Old 05-07-2003, 07:13 PM
Tigga's Avatar
Tigga Tigga is offline
 
Join Date: Dec 2001
Location: Atlanta
Posts: 1,061
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks Lang and Amy. I was hoping there would be another way to pull the threads without sacrificing the forum permissions, and I think I found one. I edited the permission system just a little and changed it so it will exclude private forums instead of including all forums that aren't private, and it seems to work much better. The query's down to about 0.001 seconds and it seems to be working perfectly.
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 02:18 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.06040 seconds
  • Memory Usage 2,197KB
  • Queries Executed 11 (?)
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
  • (2)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)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