今天看了一本书,看了了2个问题
1 mysql中 浮点比定点运算快(之前我一直理解是相反的)
2在mysql 5.0及以上版本中,服务器自身进行了定点运算,因为CPU并不支持它进行直接计算(前面是原文引用书本)浮点运算会快一点,就体现在他说的这一点,因为浮点直接在CPU上进行。请各位大侠确认这是正确的吗?

解决方案 »

  1.   

    上下文有点对,具体出处是高性能mysql  65页
      

  2.   

    上下文有点多,不好列出来,具体出处是高性能mysql  65页
      

  3.   

    惭愧 我也有这本书 看过不止一遍 不过远没楼主来得仔细
    按照书上说的 浮点直接在CPU上进行 而DECIMAL是在服务器上进行 应该可以理解为是要mysql自身处理 在内部可能转为 double 所以应该有可能
    等大牛解释
      

  4.   


    应该可以理解为是要mysql自身处理
    mysql  最终还是在CPU上运算的啊
      

  5.   

    终于想起来翻到了:我的书上是写的"Decimal":大致如下:2在mysql 5.0及以上版本中,服务器自身进行了"Decimal"运算,因为CPU并不支持它进行直接计算
    如果你的书上写的是"定点", 那就是翻译错了
      

  6.   

    一开始以为你说的"定点"是指整数.又看了一下手册,应该是这样的,decimal翻译成定点也也以,因为的确是"定点小数"但是我们以前学计算机原理时将的定点数,和mysql里的这个decimal不一样,
    以前学的那个定点数就是整数或纯小数(小数点在最左),其它的定点小数可以转换成这两种.但是mysql的decimal无法做这个转换,
    原因是因为decimal的表示范围太大,它的位数可以到65位,这个远远超过了64位机(更不要说32位)能表示的整数范围,所以必须用软件方法实现精确计算复习了半天计算机原理,有兴趣的一起复习吧:
    http://218.5.241.24:8018/C35/Course/ZCYL-HB/WLKJ/jy/Chap02/2.1.1.1.htm
    http://online.ncu.edu.cn/eol/homepage/common/opencourse/onlinepreview.jsp?countadd=1&lid=5272&resid=121906717
      

  7.   

    如果所谓的“定点”是 decimal 类型的数的话,你书中的解释是正确的
    浮点数 float 是以二进制方式保存的,计算时计算机将通过浮点运算协处理器进行计算
    而 mysql 的 decimal 类型数据是以字符串方式存储的,计算时需先将字符串转换成“数”,仅就这一点,已经就比浮点运算慢了。况且为保证计算精度,计算时是整数部分和小数部分分开的。这就又慢了一些