先上两张表在ddl语句(数据库为MySQL):CREATE TABLE `goods_order` (
  `GOODS_ORDER_ID` int(12) NOT NULL AUTO_INCREMENT COMMENT '物料订单ID',
  `GOODS_ORDER_NO` varchar(50) DEFAULT NULL COMMENT '订单流水号订单类型+组织机构+系统ID+序列',
  `SOU_ORGAN_ID` int(12) DEFAULT NULL COMMENT '订单来源组织机构',
  `SOU_SYS` int(2) DEFAULT NULL COMMENT '订单来源系统',
  `OPR_USER_ID` int(12) DEFAULT NULL COMMENT '订单下单人',
  `SERVICE` int(2) DEFAULT NULL COMMENT '订单类型',
  `CRT_TIME` datetime DEFAULT NULL COMMENT '下单时间',
  `STATUS` varchar(4) DEFAULT NULL COMMENT '订单状态',
  `GOODS_ORDER_DESC` varchar(500) DEFAULT NULL COMMENT '订单备注',
  `REL_ORDER_ID` varchar(50) DEFAULT NULL COMMENT '关联外部订单ID',
  `STORE_IDS` varchar(100) DEFAULT NULL COMMENT '涉及仓库ID',
  `IN_STORE_ID` int(12) DEFAULT NULL COMMENT '入库仓库ID',
  `OUT_STORE_ID` int(12) DEFAULT NULL COMMENT '出库仓库ID',
  `order_id` bigint(20) DEFAULT NULL COMMENT '涉及订单1',
  `flow_inst_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`GOODS_ORDER_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3955 DEFAULT CHARSET=utf8;
CREATE TABLE `goods_order_item` (
  `GOODS_ORDER_ITEM_ID` int(12) NOT NULL AUTO_INCREMENT COMMENT '订单明细ID',
  `GOODS_ORDER_ID` int(12) DEFAULT NULL COMMENT '订单ID',
  `SERVICE` int(2) DEFAULT NULL COMMENT '订单类型',
  `EQUIPMENT_INST_ID` int(12) DEFAULT NULL COMMENT '物料实例ID',
  `PRE_COUNT` float(12,2) DEFAULT NULL,
  `REL_COUNT` float(12,2) DEFAULT NULL,
  `PRICE` float(12,2) DEFAULT NULL COMMENT '物料单价',
  `SUPPLIER_ID` int(12) DEFAULT NULL COMMENT '物料供应商',
  `TAR_POSITION_ID` int(12) DEFAULT NULL COMMENT '物料归属位置',
  `TAR_SG_REL_ID` int(12) DEFAULT NULL COMMENT '物料归属明细',
  `SOU_SG_REL_ID` int(12) DEFAULT NULL COMMENT '物料来源明细',
  `USE_USER_ID` int(12) DEFAULT NULL COMMENT '物料领用人',
  `RET_USER_ID` int(12) DEFAULT NULL COMMENT '物料归还人',
  `EQUIPMENT_AREA_ID` int(12) DEFAULT NULL COMMENT '设备启用位置',
  `EQUIPMENT_POSITION` varchar(100) DEFAULT NULL COMMENT '设备启用位置详细',
  `EQUIPMENT_AREA_POINT_ID` int(12) DEFAULT NULL COMMENT '启用位置热点',
  `HOUSE_ID` int(12) DEFAULT NULL COMMENT '启用房间号(针对于水电煤气仪表类设备)',
  `PRE_COUNT2` int(12) DEFAULT NULL COMMENT '新设备预计数量(设备更换使用)',
  `REL_COUNT2` int(12) DEFAULT NULL COMMENT '新设备实际数量(设备更换使用)',
  `TAR_OPR` int(12) DEFAULT NULL COMMENT '设备清理去处',
  `CRT_TIME` datetime DEFAULT NULL COMMENT '下单时间',
  `GO_ITEM_DESC` varchar(50) DEFAULT NULL COMMENT '备注',
  `initial_price` varchar(10) DEFAULT NULL COMMENT '销售价格',
  `deliver_price` varchar(10) DEFAULT NULL COMMENT '标准价格',
  `users` varchar(300) DEFAULT NULL,
  `SELL_PRICE` varchar(10) DEFAULT '0' COMMENT '销售价格',
  PRIMARY KEY (`GOODS_ORDER_ITEM_ID`),
  KEY `goods_order_item_index` (`SOU_SG_REL_ID`),
) ENGINE=InnoDB AUTO_INCREMENT=7108 DEFAULT CHARSET=utf8;
1、首先来看一下现在的sql
SELECT * FROM GOODS_ORDER H , GOODS_ORDER_ITEM G 
WHERE G.GOODS_ORDER_ID=H.GOODS_ORDER_ID;
执行计划如下执行时间 0.2S
2、alter TABLE goods_order_item add INDEX goods_order_id_index(goods_order_id)
加了一个索引,执行计划变为如下:执行时间为0.4S
 
我的疑问出来了,为什么加了索引而且rows也明显变少,执行次数应该更少啊,为何执行时间却增加了很多,求大神帮忙解答