数据结构
CREATE TABLE `temp12` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(40) NOT NULL,
  `nickname` varchar(40) NOT NULL,
  `qq` varchar(11) NOT NULL,
  `password` varchar(40) NOT NULL,
  `Salt` varchar(10) NOT NULL,
  `secques` varchar(10) NOT NULL,
  `email` varchar(40) NOT NULL,
  `mobile` varchar(40) NOT NULL,
  `lastip` char(15) NOT NULL,
  `regdate` varchar(40) NOT NULL,
  `lastlogintime` varchar(40) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`,`password`,`email`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=30645382 DEFAULT CHARSET=utf8;所在地方
查询email列某个值 加了唯一联合索引 查询语句 like=$xxxx%  语句需要8分钟是怎么回事 请大牛帮忙分析下索引  是不是因为表语句中间有空值 如图2的空值如果是的话 如何解决这个问题

解决方案 »

  1.   

    `username`,`password`,`email`
    这个联合索引单独email查询时用不到索引的 只能查询username或者`username`,`password`或者`username`,`password`,`email`的时候才能用到这个联合索引你还是单独建立email索引吧
      

  2.   

    谢谢楼上的 我想问下 如果我要保持每条记录的唯一性 也就是不重复 以username`,`password`,`email为字段 又要有能查询每个单列 我该怎么做
      

  3.   

    楼主的查询语句是什么? 贴出以供分析。贴出你的
    select ... where ..
    explain select ...
    show index from ...
      

  4.   

    if ($sea=="like"){
                $sql[]="SELECT * FROM  (  SELECT   $col FROM sgk_".$web." WHERE `{$type}` like '$keys%' LIMIT 20   )  tmp_{$web} ";
                }
            else{
                $sql[]="SELECT * FROM  (  SELECT   $col FROM sgk_".$web." WHERE `{$type}` = '$keys' LIMIT 20   )  tmp_{$web} ";
    }
      

  5.   

    主要是用来查询 写入操作并不多 我想MyISAM应该是不错的 现在就是如何不重复 查询又快 我的需要查询列就是 username password email 三个字段 我的意思是单独查询
      

  6.   

    不要贴PHP代码,并不是所有人都懂PHP。 直接按要求贴出语句及结果。
      

  7.   

    查询username字段
    ----------------------------------------------------------------------------------------------
    select * from `temp12` where username like '520XMABC%'找到一个行
    查询时间:0.106s查询password字段
    ----------------------------------------------------------------------------------------------
    select * from `temp12` where password like '111222tianya%'
    找到58600行
    查询时间:36.238s
    查询EMAIL字段
    ------------------------------------------------------------------------------------------
    查询EMAIL
    select * from `temp12` where email like '团队之星@info.hainan.net%'找到一行
    查询时间:33.173s
      

  8.   

    create index xxx1 on temp12(`password`);
    create index xxx2 on temp12(`email`);