我的mysql有张表,用户名username的字段建立了唯一性索引,因为用户名要求是唯一的,主键是id,为递增的,记录数大概有30w条;结果发现使用sqlyog查询记录的时候,sqlyog就挂掉了,未响应,必须要结束进程才能关闭sqlyog,但是mysql数据库是好的;
sqlyog版本是MYSQL GUI 企业版 8.14
查询脚本:select * from company where username='XXXX';开始以为是自己那条记录中的字段插入了不符合规则的字符,我自己测试,折腾了很多次之后终于发现,我把username的唯一性索引删掉之后,使用sqlyog查询一切正常;如果我删掉唯一性索引,建立普通索引,查询也是一切正常这到底是怎么回事呢?有没有人遇到呢?

解决方案 »

  1.   

    你是之后才建立唯一索引的把。换句话说,表里面已经有重复的username了把。
      

  2.   

    用命令行工具试一下,MYSQL会提示相关信息的。
      

  3.   


    要是有重复的 mysql会报错的,我是后来创建的唯一性索引,当时也是有重复的,报错的时候我把那些重复的都删了
      

  4.   


    用什么工具呢?我用explain试过,如下查询用户:
    EXPLAIN SELECT username,LENGTH(introduce) FROM de_company WHERE username='wxchangh0878';
    id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra
    "1","SIMPLE","company","const","username","username","62","const","1",""
      

  5.   

    你说的是什么命令呢?我使用explain,查询如下:
    EXPLAIN SELECT * FROM company WHERE username='wxchangh0878';
    id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra
    "1","SIMPLE","company","const","username","username","62","const","1",""
      

  6.   

    dos运行是正常的,我上面也讲了,只是sqlyog挂掉,数据库服务没有任何问题