表结构:
CREATE TABLE `player_property` (
`n_roleid` int(11) NOT NULL COMMENT '玩家角色ID',
`s_vocation` varchar(1) NOT NULL COMMENT '职业',
`n_vcurrency` bigint(20) NOT NULL COMMENT '游戏中产生和流通虚拟币,\\n 并非人民币充值。',
`n_lv` smallint(6) NOT NULL COMMENT '等级',
`n_exp` bigint(20) DEFAULT NULL COMMENT '经验',
`d_last_online` datetime DEFAULT NULL COMMENT '最后在线时间',
`n_online_time` int(11) DEFAULT NULL COMMENT '在线时长',
`s_online` varchar(1) DEFAULT NULL COMMENT '1-在线 其他不在线',
`d_last_login` datetime DEFAULT NULL COMMENT '最后登录时间',
`n_force` bigint(20) DEFAULT NULL COMMENT '战斗力',
`s_last_mac` varchar(80) DEFAULT NULL COMMENT '最后一次登录游戏的设备MAC',
`d_save` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
`n_rank` tinyint(4) DEFAULT NULL COMMENT '当前官品',
`n_max_rank` tinyint(4) DEFAULT NULL COMMENT '历史最高官品',
`n_retinue_id` int(11) DEFAULT NULL COMMENT '主角随从ID',
`n_equip_smelt` int(11) DEFAULT NULL COMMENT '装备熔炼值',
`s_longitude` varchar(11) DEFAULT NULL COMMENT '坐标经度',
`s_latitude` varchar(11) DEFAULT NULL COMMENT '坐标纬度',
`n_exploit` int(11) DEFAULT NULL COMMENT '功勋值',
`s_head` varchar(200) DEFAULT NULL COMMENT '头像',
`n_head_side` smallint(6) DEFAULT NULL COMMENT '头像边框',
`s_sign` varchar(100) DEFAULT NULL COMMENT '个性签名',
`n_age` smallint(6) DEFAULT NULL COMMENT '真实年龄',
`n_gender` tinyint(4) DEFAULT NULL COMMENT '真实性别',
`s_area` varchar(100) DEFAULT NULL COMMENT '地区',
`n_popular` bigint(20) DEFAULT NULL COMMENT '人气值',
`n_last_channel` int(11) DEFAULT NULL COMMENT '最后连接的聊天频道',
`n_charmnum` int(11) DEFAULT NULL COMMENT '魅力值',
`n_fans` int(11) DEFAULT NULL COMMENT '粉丝数',
`n_idol` int(11) DEFAULT '0' COMMENT '关注数',
`n_camp` tinyint(4) DEFAULT NULL COMMENT '阵营',
`s_rank_speak` varchar(100) DEFAULT NULL COMMENT '官场喊话内容',
`s_fashion` varchar(100) DEFAULT NULL COMMENT '时装(时装id,时装id,时装id)',
`n_chat_side` smallint(6) DEFAULT NULL COMMENT '聊天边框',
`s_official_slap_head` varchar(50) DEFAULT NULL COMMENT '官权掌嘴头像(力道id_过期时间秒数)',
`s_character` varchar(200) DEFAULT NULL COMMENT '性格',
`s_birthday` varchar(50) DEFAULT NULL COMMENT '生日',
`n_constellation` tinyint(4) DEFAULT NULL COMMENT '星座',
`n_background` smallint(6) DEFAULT NULL COMMENT '背景',
`n_lovers_tree_id` bigint(20) DEFAULT NULL COMMENT '姻缘树id',
`n_marriage_id` bigint(20) DEFAULT NULL COMMENT '联姻id',
`n_reinLv` smallint(6) DEFAULT NULL COMMENT '转生等级',
`s_role_skill` varchar(100) DEFAULT NULL COMMENT '主角技能',
`n_back_ornament_id` int(11) DEFAULT NULL COMMENT '背饰id',
`n_role_quality` tinyint(4) DEFAULT NULL COMMENT '主角品质',
PRIMARY KEY (`n_roleid`),
KEY `idx_player_property20` (`d_save`),
KEY `idx_player_property1` (`d_last_online`),
KEY `idx_player_property2` (`s_online`),
KEY `idx_player_property3` (`n_force`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='玩家属性值表';
CREATE TABLE `player_friend` (
`n_roleid` int(11) NOT NULL COMMENT '玩家角色ID',
`n_froleid` int(11) NOT NULL COMMENT '好友角色ID',
`d_last_gift` datetime DEFAULT NULL COMMENT '上次送礼时间',
`d_last_chat` datetime DEFAULT NULL COMMENT '上次聊天时间',
`n_relation` int(11) DEFAULT NULL COMMENT '亲密度',
`n_type` tinyint(4) DEFAULT NULL COMMENT '关系标记 1:好友 -1:仇敌',
`n_relation_id` int(11) DEFAULT NULL COMMENT '关系id',
`n_relation_time` int(11) DEFAULT NULL COMMENT '建立关系时间(秒数)',
PRIMARY KEY (`n_roleid`,`n_froleid`),
KEY `idx_player_friend1` (`n_froleid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色_好友表';
CREATE TABLE `player_label` (
`n_roleid` int(11) NOT NULL COMMENT '玩家ID',
`n_id` smallint(6) NOT NULL COMMENT '标签ID',
`n_praise` smallint(6) DEFAULT NULL COMMENT '标签点赞数',
`d_setTime` datetime DEFAULT NULL COMMENT '标签设置时间',
PRIMARY KEY (`n_roleid`,`n_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='玩家_标签信息表';
第一个SQL
(SELECT n_roleid FROM player_property pp WHERE NOT EXISTS
(SELECT 1 FROM player_friend WHERE n_roleid = 80007 AND n_froleid = pp.n_roleid UNION (SELECT n_roleid FROM player_label WHERE n_roleid = pp.n_roleid))
AND n_lv <= 390 ORDER BY n_lv DESC LIMIT 80 );
查询速度:
第二个SQL
SELECT n_roleid FROM player_property pp WHERE NOT EXISTS
(SELECT 1 FROM player_friend WHERE n_roleid = 80007 AND n_froleid = pp.n_roleid UNION (SELECT n_roleid FROM player_label WHERE n_roleid = pp.n_roleid))
AND n_lv <= 390 ORDER BY n_lv DESC LIMIT 80;
查询速度:
查询环境均在内网环境数据量不多的情况下,生成环境的区别是几分钟和几秒的差别!
求解惑!
这是同一套数据库吗,数据量一样?
分别查询一下执行计划,explain sql
看下索引使用情况。
我个人是语法结构问题吧,就好比1+3/6更容易理解还是1+(3/9)手动滑稽