mysql索引引发的悲剧

今天晚上,突然之间吓了我一跳,在看自己做的项目的后台的订单时,居然发现了一个很诡异的情况(订单金额啥啥的都对的,但是程序取不到订单的产品)。也许我这样说,大家根本就不明白是啥个情况,呵呵~~我这也只是开个头而已。具体是啥样的情况我也就不多说了。

下面直接说专业的吧~呼呼~~~

有表orders_products如下表结构
id orders_id product_name ……………………….

其中id为主键自增长的
我为orders_id设置了索引。
数据库中现在有很多记录,诸如:
1 2 shoes
2 2 cloth
3 3 something
. . .
. . .
. . .
. . .
2187 2101 .
2188 2102 .
2189 2103 .
2190 2104 .
2191 2105 .
2192 2106 .
2193 2107 .
2194 2108 .
2195 2109 .
2191 2110 .
. . .
. . .
. . .

我在Linux主机上直接运行如下的sql语句
select * from orders_products where orders_id = 2105
select * from orders_products where orders_id = 2106
select * from orders_products where orders_id = 2107
select * from orders_products where orders_id = 2108
select * from orders_products where orders_id = 2109
这些sql语句,居然取不到数据!

运行其他的sql语句诸如
select * from orders_products where orders_id = 2104
select * from orders_products where orders_id = 2
select * from orders_products where orders_id = 3
等等都是可以取到数据的。

这真让人蛋疼呀~~
于是我将orders_products整表下载下来,放到我的本机windows环境中,再运行原来取不到数据的sql语句,结果都是可以取到数据的。我从来还没想过,sql在linux和windows环境下,运行的结果还会有差异。

最后我试了一下,将orders_id这个索引给删除了,结果在linux主机上,运行原先取不到数据的sql语句,结果也正常了。
但是我还是没有在网上找到有关这方面的解释。不知道哪位大哥了解这方面的知识,还请指教哦!

好久没更新博客了,因为一直都在忙自己的工作。

原创文章,转载请注明: 转载自梦三秋

本文链接地址: mysql索引引发的悲剧

文章的脚注信息由WordPress的wp-posturl插件自动生成

关于梦三秋

有过辛酸有过泪,有过挫折有过失败,但是我从未放弃过,因为我叫甘强。所以我必须得强~
此条目发表在Mysql分类目录,贴了标签。将固定链接加入收藏夹。

mysql索引引发的悲剧》有 54 条评论

  1. 寇铈鑫说:

    最近我也将有一个wp的博客出来 到时候记得互相联系啊

  2. 有点蓝说:

    最近大家好像都更新的慢了,生活还是更需要去奔波哈

  3. 哦,还有这种情况?还真没遇到过,呵,不过我一向是用win主机的。老兄,你又好久没更新了吧,呵呵

  4. mbt shose说:

    快考试了,烦死了,又要去挑灯夜读

  5. jfbcb说:

    不知三秋是做前台还是后台的工作的啊,兄弟是PHPer,喜欢jq…呵呵.

  6. 博主有段时间没有更新了,什么时候更新啊

  7. 技术博客强啊,赞一个。。。。。。。。。

  8. meijiaju说:

    搞不懂这些专业性的东西!

  9. 寇铈鑫说:

    博主 你该更新了吧

  10. 减肥药排行榜 http://www.nmgtkjx.com 小站 PR 5 希望多多和博主交流。

  11. 银杏说:

    小站前来学习,谢谢博主分享。

  12. nivea说:

    看了博主很多篇博文了,在这里冒个泡

  13. 银杏树说:

    刚接触网站维护工作,来博主博客学习一下。

  14. 来博主博客上学习了,小弟刚刚学会弄网站,来看看大哥如何更新内容的。

  15. 冒泡!支持回访,小弟做淘宝客的。

  16. 经常来贵博客,基本都没有留言向博主问好,真不好意思。

  17. 平顶山说:

    博主 你博客都长草了

  18. 悠莱说:

    博主的博文质量真不错,好多东西能让我得到启发。小弟网站 悠莱 http://www.szbfb.com 希望能和博主多多交流。

  19. 安卓汇说:

    这个问题还真是奇怪呢。。。

  20. 爱米特说:

    写的不错,顶楼主!

  21. 问学堂说:

    很不错,学习了

  22. 进口红酒说:

    前面还能看懂,你一专业,我就蒙了

  23. 不错,jquery现在很好也很流行,支持博主,http://www.y-gu.com

  24. 程程说:

    怎么会在orders_id = 2105之后不行,2101之前的数据就可以呢?是不是你的索引有什么限制?

  25. 植物说:

    楼主,有空也过我这边踩踩

  26. 很不错的,顶一下下

  27. 减肥咖啡说:

    围观一下,继续更新吧。

  28. bora521说:

    orders_id不是主键?

  29. 彩讯网说:

    博主很久没有更新博客了哦~~其实很期待你的JQUERY插件收集的~

  30. jQuery学习说:

    呵呵,你也是好长时间没有更新了啊!最近是不是没有在搞jQuery?

  31. 泡妞技巧说:

    想和博客 换个友情链接 QQ:1084554412 我的小站发文章百度当天收录 哈

  32. 您的博客不错啊,可以合作个链接么,请发邮箱 whp126003@163.comx谢谢

  33. 杨毅说:

    不晓得你是怎么解决的。。。

  34. 王虎说:

    不可能是有索引导致的取不到数据
    你chekk table orders_products
    或者optimize table orders_products
    试试看

    这个orders_id字段还是必须要有索引的,不然随着业务增长,查询效率就越来越低了

  35. deuteron说:

    估计是索引坏了,删了重建一下呗。

    REPAIR TABLE xx
    如果还不行就
    shell> mysqldump db_name t1 > dump.sql
    shell> mysql db_name < dump.sql

    http://dev.mysql.com/doc/refman/5.0/en/rebuilding-tables.html

  36. 博主的文章太专业了,郁闷,我不是搞这行的,有些东西看不懂!

  37. 学习了,现在的PHP+MYSQL比以前的复杂了,以前太简单,现在配置都超麻烦的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注