selectmysql索引
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;这条语句可以正常执行,到底有什么办法解决问题呢?