MySQL timestamp 类型比较的测试

TIMESTAMP 类型字段与 CHAR 比较:

BEGIN
  #Routine body goes here...
  DECLARE rdToday CHAR(10) DEFAULT CURDATE();
  DECLARE rdBegin CHAR(19) DEFAULT CONCAT(rdToday, '00:00:00');
  DECLARE rdEnd CHAR(19) DEFAULT CONCAT(rdToday, '23:59:59');
  SELECT mdc_ordertime FROM mz_drugrecipe WHERE mdc_ordertime BETWEEN rdBegin AND rdEnd;
END

TIMESTAMP 类型字段与 TIMESTAMP 比较:

BEGIN
  #Routine body goes here...
  DECLARE rdBegin TIMESTAMP DEFAULT CURDATE();
  DECLARE rdEnd TIMESTAMP DEFAULT TIMESTAMPADD(SECOND, -1, DATE_ADD(CURDATE(),INTERVAL 1 DAY));
  -- 或:
  -- DECLARE rdToday CHAR(10) DEFAULT CURDATE();
  -- DECLARE rdBegin CHAR(19) DEFAULT CONCAT(rdToday, '00:00:00');
  -- DECLARE rdEnd CHAR(19) DEFAULT CONCAT(rdToday, '23:59:59');
  SELECT mdc_ordertime FROM mz_drugrecipe WHERE mdc_ordertime BETWEEN rdBegin AND rdEnd;
END

实验步骤:

都执行 100000 次,第一种 CHAR 变量与 TIMESTAMP 类型字段比较,花费时间40s+, 第二种 TIMESTAMP(不论通过哪种构造方式构造)变量与 TIMESTAMP 类型字段比较,花费时间 30s+.

结论:

应该将要比较的变量化为目标字段的类型 TIMESTAMP 后再进行比较.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,252评论 1 44
  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,796评论 0 44
  • 今天我想和自己来一场对话。也是一个记录,一个心态改变的记录。 自生病以来,你就一直在家,因为需要生存,你干起了微商...
    大老爷的不老书阅读 246评论 1 0
  • 作者:王在 酒后你沉默不语 该喝的酒你喝了 不该喝的酒你也喝了 喝酒好你有股轻飘飘的感觉 你不再沉重你不再劳累你不...
    王安忆阅读 361评论 3 10
  • SQLite 有许多内置函数用于处理字符串或数字数据。下面列出了一些有用的 SQLite 内置函数,且所有函数都是...
    SingleDiego阅读 1,119评论 0 0