+ -
当前位置:首页 → 问答吧 → 各位 这个SQl语句应该如何写会更加高效?

各位 这个SQl语句应该如何写会更加高效?

时间:2011-07-01

来源:互联网

表一: tab_follow
DROP TABLE IF EXISTS tab_follow;
CREATE TABLE tab_follow(
user_id mediumint(8) unsigned NOT NULL default '0', -- 用户id号
user_name varchar(15) NOT NULL default '', -- 用户名称
  follow_id mediumint(8) unsigned NOT NULL default '0', -- 跟随者id号
  follow_name varchar(15) NOT NULL default '', -- 跟随者名称
  follow_status tinyint(1) NOT NULL default '0', -- 跟随状态 默认 0表示单向关注 1表示双向关注
  dateline int(10) unsigned NOT NULL default '0', -- 跟随日期
  PRIMARY KEY (user_id,follow_id),
  KEY follow_id (follow_id)
) ENGINE=MyISAM;
表二: tab_gallery
DROP TABLE IF EXISTS tab_gallery;
CREATE TABLE tab_gallery(
gallery_id mediumint(8) unsigned NOT NULL AUTO_INCREMENT, -- 目录的id号
  gallery_name varchar(50) NOT NULL DEFAULT '', -- 目录的名称
  gallery_desc varchar(255) NOT NULL DEFAULT '', -- 目录描述
  gallery_view int(10) NOT NULL DEFAULT '0', -- 被浏览的次数
  gallery_like int(10) NOT NULL DEFAULT '0', -- 被标记为喜欢的
  gallery_cover varchar(60) NOT NULL default '', -- 目录封面图片
  `public_status` tinyint(1) NOT NULL DEFAULT '0', -- 0 --> 分享 1-->隐私
  dateline int(10) unsigned NOT NULL DEFAULT '0', -- 创建的时间
  user_id mediumint(8) unsigned NOT NULL DEFAULT '0', -- 目录所属的用户的id
  user_name varchar(15) NOT NULL DEFAULT '', -- 目录所属用户的昵称
  items_num smallint(6) unsigned NOT NULL DEFAULT '0', -- 目录中所拥有的项目数
  PRIMARY KEY (gallery_id),
  KEY uid (user_id,dateline)
) ENGINE=MyISAM;

查询结果要求是这样:根据指定表一:tab_follow 中的follow_id 所得的user_id去查询表二:tab_gallery 中对应的记录
目前我使用嵌套查询:SELECT * FROM mini_gallery WHERE user_id in (select user_id from mini_follow where follow_id = 1) 能够满足要求 但是涉及到分页觉得这应该不算一种好的方式,希望高手们指教 先谢过了

作者: zhangyityd   发布时间: 2011-07-01

SELECT a.* FROM mini_gallery a 
inner join mini_follow b on a.user_id=b.user_id
WHERE b.follow_id = 1

在mini_gallery中user_id、
mini_follow中user_id、follow_id建立索引

作者: WWWWA   发布时间: 2011-07-01

引用 1 楼 wwwwa 的回复:

SELECT a.* FROM mini_gallery a
inner join mini_follow b on a.user_id=b.user_id
WHERE b.follow_id = 1

在mini_gallery中user_id、
mini_follow中user_id、follow_id建立索引

分页:LIMIT offset,limit

作者: obullxl   发布时间: 2011-07-01

SELECT * 
FROM mini_gallery 
WHERE user_id in (select user_id from mini_follow where follow_id = 1) 
limit 10,10

作者: rucypli   发布时间: 2011-07-01

相关阅读 更多