vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   mysql question (https://vborg.vbsupport.ru/showthread.php?t=66855)

Princeton 07-05-2004 01:31 AM

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

Zachery 07-05-2004 01:41 AM

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 ?

Xenon 07-05-2004 05:03 PM

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 :)

Princeton 07-05-2004 05:30 PM

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.


All times are GMT. The time now is 02:08 AM.

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.01011 seconds
  • Memory Usage 1,720KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (4)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete