status BTREE 否 否 status 6 A
type BTREE 否 否 type 2 Astatus,type都做独立索引,都是tinyint(1)型查询条件跟status=1有索引效果,查询条件跟type=1没有索引效果

解决方案 »

  1.   

    对于type=1的情况,有没有数据被取出?
      

  2.   

    对于唯一性不强的索引,mysql的查询分析器是不会使用的,你也可以强制它使用还是要贴出你的sql语句看一下
      

  3.   

    贴出你的表结构(phpmyadmin 导出的)
    应该是你定义时造成的我做了多次测试,都无法再现你的场景
      

  4.   


    EXPLAIN SELECT * 
    FROM  `zy_order` 
    WHERE STATUS =1EXPLAIN SELECT * 
    FROM  `zy_order` 
    WHERE TYPE =1
    sql语句也完全一样,都是有数据查出的
      

  5.   

    innodb型CREATE TABLE IF NOT EXISTS `zy_order` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1:商品 2:云购 3:兑换商品',
      `source` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1:标准订单PC 2:WAP 3:APP',
      `title` varchar(30) NOT NULL,
      `order_sn` varchar(64) NOT NULL COMMENT '我方订单号',
      `mo_sn` varchar(64) NOT NULL COMMENT '合并支付订单号',
      `payment_mode` tinyint(1) NOT NULL DEFAULT '1' COMMENT '支付方式 1:在线支付 2:到付(线下支付)',
      `payment_company` char(15) NOT NULL COMMENT '支付公司',
      `payment_channel` char(15) NOT NULL COMMENT '支付渠道',
      `pay_order_id` varchar(200) NOT NULL COMMENT '支付订单号',
      `total_fee` decimal(10,2) unsigned NOT NULL COMMENT '订单总金额',
      `bond` decimal(8,2) unsigned NOT NULL COMMENT '保证金',
      `balance_fee` decimal(10,2) NOT NULL COMMENT '网站付款',
      `shipping_fee` smallint(3) unsigned NOT NULL COMMENT '物流费',
      `insure_fee` decimal(8,2) unsigned NOT NULL COMMENT '保价费',
      `discount_fee` decimal(8,2) unsigned NOT NULL COMMENT '优惠费用:网站折扣减免',
      `coupons_fee` decimal(8,2) unsigned NOT NULL COMMENT '优惠券费用',
      `score_fee` decimal(8,2) unsigned NOT NULL COMMENT '积分费用',
      `actual_paid` decimal(10,2) unsigned NOT NULL COMMENT '实付款(所有正向金额累加,不考虑退款)',
      `actual_refund` decimal(10,2) NOT NULL COMMENT '订单退款总金额(所有逆向金额累加)',
      `tax_fee` decimal(10,2) NOT NULL COMMENT '税费',
      `tax_title` varchar(30) NOT NULL COMMENT '发票抬头',
      `tax_content` varchar(60) NOT NULL COMMENT '发票内容',
      `member_id` int(10) unsigned NOT NULL COMMENT '买家信息',
      `member_name` varchar(30) NOT NULL,
      `seller_id` int(10) NOT NULL COMMENT '卖家信息',
      `agent_id` int(10) NOT NULL COMMENT '代理商id',
      `recipient` char(15) NOT NULL COMMENT '收件人',
      `pv_id` smallint(2) unsigned NOT NULL,
      `ct_id` smallint(4) unsigned NOT NULL,
      `dist_id` smallint(4) unsigned NOT NULL,
      `address` varchar(255) NOT NULL,
      `zip_code` char(15) NOT NULL,
      `mobile` varchar(45) NOT NULL,
      `memo` varchar(255) NOT NULL COMMENT '备注',
      `ip` varchar(50) NOT NULL,
      `delivery_id` int(10) unsigned NOT NULL COMMENT '关联配送方式id',
      `create_time` int(11) unsigned NOT NULL COMMENT '订单创建时间',
      `order_time` int(10) unsigned NOT NULL COMMENT '订单有效时间',
      `pay_time` int(11) unsigned NOT NULL COMMENT '支付完成时间',
      `delivery_time` int(10) unsigned NOT NULL COMMENT '发货时间',
      `confirm_time` int(10) NOT NULL COMMENT '交易完成时间',
      `is_refund` tinyint(1) NOT NULL DEFAULT '0' COMMENT '退款 0:无退款 1:有退款 2:退款完成',
      `is_rate` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否评价',
      `is_display` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否显示订单(用户)',
      `delivery_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '物流状态 0:未发货1:已发货 2:已收货 -1:退货',
      `pay_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '支付状态 0:未支付 1:已支付',
      `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '0:待确认 1:已确认 2:确认收货  -1:关闭',
      PRIMARY KEY (`id`),
      KEY `member_id` (`member_id`),
      KEY `status` (`status`),
      KEY `type` (`type`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='订单管理' AUTO_INCREMENT=65 ;
      

  6.   

    发现是数据问题,清空数据表 (TRUNCATE)
    重新插入数据就可以
    把老数据导入新建表,查询就不行
    奇怪的是type字段不行,status字段可以,这让我很疑惑