Curious if this query can be made faster? or if there are other similar queries that will work better?
SELECT id,source FROM posts WHERE id = ANY(SELECT image_id FROM `post_tags` WHERE tag_id = (SELECT id FROM `tags` WHERE tag = _utf8 '$TAG' collate utf8_bin)) AND posts.exists = 'n' ORDER BY posts.ratecount DESC LIMIT 0,100
Without use:
AND posts.exists = 'n' ORDER BY posts.ratecount DESC LIMIT 0,100
It speeds up for queries to useful levels, but needs it to some extent for what I'm doing.
, JOIN, - .
SELECT * FROM posts LEFT JOIN post_tags ON post_tags.image_id = posts.id JOIN tags ON post_tags.tag_id = tags.id WHERE tags.tag = _utf8 '$tag' collate utf8_bin AND posts.exists = 'n' ORDER BY posts.ratecount DESC LIMIT 0,100
, 22 s > 0,26 .
TAG? ID TAG? TAG(TAG, ID), .
TAG(TAG, ID)
POST_TAGS? TAG_ID IMAGE_ID? , POST_TAGS(IMAGE_ID, TAG_ID).
POST_TAGS(IMAGE_ID, TAG_ID)
, , POST_TAGS(TAG_ID, IMAGE_ID) POST_TAGS(IMAGE_ID, TAG_ID), .
POST_TAGS(TAG_ID, IMAGE_ID)
POSTS, POSTS(ID, POSTS, RATEACCOUNT), ( , INSERT, UPDATE DELETE, ).
POSTS(ID, POSTS, RATEACCOUNT)
, JOIN , .