MoeYang 2015-05-21 05:37 采纳率: 0%
浏览 2173

Mysql添加索引后的查询失败问题

sql语句如下:

.

select blog0_.blogId as blogId5_, blog0_.className as className5_, blog0_.title as title5_, blog0_.content as content5_, blog0_.createDate as createDate5_, blog0_.pictureSum as pictureSum5_, blog0_.adminId as adminId5_ from blog blog0_ where 1=1 and blog0_.className=1 order by blog0_.blogId DESC limit 1,10;

.

索引在className上。

.

未建立索引前该语句可以查询出需要的数据;

.

建立索引之后该语句只能执行出 0 rows;

.

然后开始explain,发现是走了索引的,但却没有拿到数据。

.

把select * 换成select a,b,c,d from 。。。之后,找到了问题出现的地方:

.

数据表中有一列数据remark是text类型,如果用select * 或select a,b,c,remark。。。进行查询的话,就直接查到了0条数据。

.

如果select的时候不加remark这一列,就能正常完成查询。

.

那么问题来了,我不可能不用remark这一列的,也不可能改动表说把remark这一列挪到新的一张表中。

.

好了小伙伴们,我只想SELECT * FROM xxx_blog where className = 1 ORDER BY blogId DESC LIMIT 1,10;这条语句可以正常执行,到底有什么办法解决问题呢?

  • 写回答

3条回答 默认 最新

  • WorldMobile 2015-05-21 06:19
    关注

    sql语句如下:
    .
    select blog0_.blogId as blogId5_, blog0_.className as className5_, blog0_.title as title5_, blog0_.content as content5_, blog0_.createDate as createDate5_, blog0_.pictureSum as pictureSum5_, blog0_.adminId as adminId5_ from blog blog0_ where 1=1 and blog0_.className=1 order by blog0_.blogId DESC limit 1,10;
    .
    在className字段下加了索引之后,sql语句就搜不到结果了。未添加索引之前是正常运行的。
    .
    后来发现如果把order by 语句删除,添加索引之后的sql一样能搜索到结果。
    .
    求大神指导到底是什么情况?

    答:索引只会影响sql的执行效率,不会影响执行结果,也有可能是你的索引建的有问题,删除以后重新建试试

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料