Mysql 上 SQL 优化NOT IN (除了把NOT IN转化为LEFT JOIN外,可优化影响的数据行数)

Mysql 下 SQL 优化NOT IN (除了把NOT IN转化为LEFT JOIN外,可优化影响的数据行数)

Mysql 下 SQL 优化NOT IN (除了把NOT IN转化为LEFT JOIN外,可优化影响的数据行数)

2010-05-31 17:38:30|??分类:?默认分类|字号?订阅

Mysql?下?SQL?优化 NOT IN:

?

?

除了把NOT IN转化为LEFT JOIN外,可通过优化业务逻辑,减少了查询涉及到的返回的数据,从而达到优化查询的目的。

?

?

====================================================================

查询目的:? 最新更新的10条博文信息 :
从博文表中取出200条,然后排除重复,按照发表时间顺序显示。

?

SELECT?*?FROM?(?

?SELECT?post_title,?guid?,?path,?post_author,?post_date,?tableid?

?FROM?
wp_posts,?wp_blogs?

?WHERE?post_r_site?=1? /*?post_r_site?=1 表示网校下的博文?*/

?AND?post_type?=?’post’? /*??type=post 为博文?*/

?AND?post_status?=?’publish’? /*??博文不是私有博文 ?*/

?AND?wp_blogs.blog_id=wp_posts.tableid?

?AND?wp_blogs.blog_id?
NOT?IN?(SELECT?id?FROM?wp_blacklist?WHERE?type=’0′)?/*?? 博客Id 不再黑名单中?*/

?AND?wp_posts.tableid?
NOT?IN?(?SELECT?blog_id?FROM?wp_blogs?WHERE?registered?>?’2010-05-14′?)?? /*?用户注册日期大于05月14日??*/

?AND?wp_posts.post_author?
IN?(SELECT?id?FROM?wp_users)? /*??博主用户信息存在?*/

?ORDER?BY?wp_posts.post_date?DESC? /*??按照发表博文的时间做降序排列?*/

?LIMIT?200?

?)FF?

?GROUP?BY?tableid?/*?排除重复用户? 只显示用户的一条博文信息?*/

Mysql 上 SQL 优化NOT IN (除了把NOT IN转化为LEFT JOIN外,可优化影响的数据行数)

相关文章:

你感兴趣的文章:

标签云: