首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

终于踩到了慢查询的坑

来源:juejin.im/post/5bcc2935f265da0ac66987c9 (一)慢sql一 (二)慢sql二 ---- (一)慢sql问题发现 将应用发布生产环境后,前端页面请求后台API...慢查询执行计划.png 优化慢sql一 sync_dt的类型为datetime类型。换另外一种sql写法,直接通过比较日期而不是通过时间戳进行比较。...sql测试小结:在InnoDB存储引擎下,比较bigint的效率高于datetime 完成三步优化以后生产环境中请求耗时: ?...Null 意味说mysql能在优化阶段分解查询语句,在执行阶段甚至用不到访问表或索引(高效) 出现慢查询的原因 在where子句中使用了函数操作 出现慢查询sql语句中使用了unix_timestamp...对于需要计算的值最好通过程序计算好传入而不是在sql语句中做计算,比如这个sql中我们将当前的日期和七天前的日期计算好传入 后记 这个问题当时在测试环境没有发现,测试环境的请求速度还是可以的。

1.9K30

扣绩效篇 | 终于踩到了SQL查询的坑!

问题发现 将应用发布生产环境后,前端页面请求后台API返回数据,发现至少需要6s。查看到慢SQL ? step2....复现慢SQL 执行SQL select count(*) from sync_block_data where unix_timestamp(sync_dt) >= 1539101010 AND unix_timestamp...优化慢SQL sync_dt的类型为datetime类型。换另外一种sql写法,直接通过比较日期而不是通过时间戳进行比较。...出现慢查询的原因 在where子句中使用了函数操作 出现慢查询sql语句中使用了unix_timestamp函数统计出自'1970-01-01 00:00:00'的当前时间的秒数差。...对于需要计算的值最好通过程序计算好传入而不是在sql语句中做计算,比如这个sql中我们将当前的日期和七天前的日期计算好传入 后记 这个问题当时在测试环境没有发现,测试环境的请求速度还是可以的。

62240
您找到你想要的搜索结果了吗?
是的
没有找到

smalldatetime mysql_SQLSERVER中datetime和smalldatetime类型分析说明「建议收藏」

另外一个 4 字节存储以午夜后3 1/3 毫秒数所代表的每天的时间。 smalldatetime 数据类型存储日期和每天的时间,但精确度低于 datetime 。...日期范围从1900 年 1 月 1 日 2079 年 6 月 6 日,精确分钟。...datetime 从 1753 年 1 月 1 日 9999 年 12 月 31 日的日期和时间数据,精确度为百分之三秒(等于 3.33 毫秒或 0.00333 秒)。...您可能感兴趣的文章:sql server中datetime字段去除时间的语句 sql语句中如何将datetime格式日期转换为yy-mm-dd格式 使用 MySQL Date/Time 类型 sql...server中datetime字段去除时间代码收藏 sqlserver和oracle中对datetime进行条件查询的一点区别小结 mysql From_unixtime及UNIX_TIMESTAMP及

2.3K10

数据库的几种日期时间类型,你真的会用吗?

最近设计新系统的数据库,涉及跨时区的问题,于是专门调研了不同日期时间类型的利弊,也咨询了不少同行使用的情况。这里分享给大家。...常见的日期时间使用情况有如下几种:字符串、Datetime、Timestamp、Unix timestamp。...DateTime类型 DateTime类型存储的值既有日期又有时间。我们直观看到的格式为:yyyy-MM-dd HH:mm:ss。...通常,针对此种情况,如果涉及跨时区问题,可考虑单独用一个字段来存储时区。 Timestamp类型 Timestamp类型:也是既有日期又有时间的数据。存储和显示的格式Datetime一样。...上图中,数据库存储的是毫秒数,通过FROM_UNIXTIME函数,在查询时将其转换成指定格式即可。如果你的数据库存储的单位为秒,则在SQL中无需除以1000。

2.5K30

mysql时间戳转为日期格式_mysql时间戳与日期格式的相互转换

-22 12:11:10 2、日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP() [sql] view plain copy Select UNIX_TIMESTAMP(‘2006-11...); [sql] view plain copy [sql] view plain copy 输出当前时间戳 例:mysql查询当天的记录数: [sql] view plain copy $sql=”select...-08-22 12:11:10 2.日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP() Sel … 【学习】mysql 时间戳与日期格式的相互转换 1.UNIX时间戳转换为日期用函数:...PHP】 毫秒级时间戳和日期格式转换 在并发量搞得情况下.需要开启毫秒级运算 mysql 支持: `create_time` datetime() DEFAULT NULL COMMENT ‘创建时间...:2015年04月15日 2.把日期转换为时间戳,和 FROM_UNIX … MySQL时间戳和时间格式转换函数 MySQL时间戳和时间格式转换函数:unix_timestamp and from_unixtime

17.5K11

MySQL 中的日期时间类型

DATE 日期格式不带时间 TIME 部分,查询时输出格式为 YYYY-MM-DD,取值范围为 1000-01-01 9999-12-31。...DATETIME 包含日期及时间,输出格式为 YYYY-MM-DD hh:mm:ss,取值范围 1000-01-01 00:00:00 9999-12-31 23:59:59。...所以使用 TIMESTAMP 格式的时间, 2038 年会溢出,这就是 Year 2038 problem。关于该问题的讨论和解决可参见这个 StackOverflow 的回答。...同样地,也是支持带至多 6 位小数表示毫秒。 设置时也是支持将多种格式自动解析。对于冒号的情况,比如 11:12 解析成 11:12:00 而不是 00:11:12。...查询时输出格式为 YYYY,取值范围 1901 2155。 0000 也是合法的值。 支持使用以下格式进行设置: 使用 1901 ~ 2155 间的四位数字值。 或将上面的数字以字符串形式给定。

6.7K20

【mysql】日期与时间类型

日期与时间类型 日期与时间是重要的信息,在我们的系统中,几乎所有的数据表都用得到。原因是客户需要知道数据的时间标签,从而进行数据查询、统计和处理。...以YY-MM-DD格式或者YYMMDD格式表示的字符串日期,此格式中,年份为两位数值或字符串满足YEAR类型的格式条件为:当年份取值为0069时,会被转化为20002069;当年份取值为7099时...以YY-MM-DD HH:MM:SS格式或者YYMMDDHHMMSS格式的字符串插入DATETIME类型的字段时,两位数的年份规则符合YEAR类型的规则,0069表示20002069;7099表示...存储空间比较小,表示的日期时间范围也比较小 底层存储方式不同,TIMESTAMP底层存储的是毫秒值,距离1970-1-1 0:0:0 0毫秒毫秒值。...因为这个数据类型包括了完整的日期和时间信息,取值范围也最大,使用起来比较方便。毕竟,如果日期时间信息分散在好几个字段,很不容易记,而且查询的时候,SQL 语句也会更加复杂。

3.9K20

SQL知识大全(五):SQL中的时间函数

常用的时间函数 to_date()函数 to_date()函数将字符串的日期转换为时间格式日期,转换后的时间格式可以是如下形式: 格式 意义 YEAR 年的拼写 MM 数字月 MONTH 月的全拼...date 是一个用来指定开始日期DATETIME 或 DATE 值。expr 是一种以字符串形式呈现的表达式,用来指定从开始日期增加或减少的间隔值。...UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z. 一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。...在大多数的UNIX系统中UNIX时间戳存储为32位,这样会引发2038年问题或Y2038。...date 可以是一个 DATE 字符串、一个 DATETIME字符串、一个 TIMESTAMP或一个当地时间的YYMMDD或YYYMMDD格式的数字。

1.8K20

MySQL字段的时间类型该如何选择?千万数据下性能提升10%~30%🚀

,当只需要存储年份、日期、时间时,可以使用year、date、time如果需要详细的时间,可以选择datetime、timestamp或者使用整形来存储时间戳以下是不同类型的格式、时间范围、占用空间相关信息类型...、timestamp与整形时间戳相关的内容,并在千万级别的数据量中测试它们的性能,最后总结出它们的特点与使用场景datetimedatetime不仅可以存储日期、时间,还可以存储小数点后续的毫秒等 YYYY-MM-DD...需要回表查询聚簇【主键】索引获取全部数据,可能导致随机IO)根据时间段查询少量数据select SQL_NO_CACHE * from datetime_test where test_datetime...,三种类型性能都差不多 datetime > bigint > timestamp 由于回表的开销可能会影响我们的结果,因此还是要看不回表的案例根据时间段查询数据(不回表)select SQL_NO_CACHE...bigint是性能最好的,与datetime相比性能提升在10%~30%之间总结当只需要存储年份、日期、时间时,可以使用year、date、time,尽量使用少的空间datetime性能不错,方便可视化

26722

一场pandas与SQL的巅峰大战(三)

具体来讲,第一篇文章一场pandas与SQL的巅峰大战涉及数据查看,去重计数,条件选择,合并连接,分组排序等操作。...hive中获取当前时间,可以使用 current_timestamp(), current_timestamp,得到的是带有毫秒的,如果想保持和上面同样的格式,需要使用substr截取一下。...可以进行先截取后拼接,把横线-拼接在日期之间即可。二是借助于unix时间戳进行中转。SQL中两种方法都很容易实现,在pandas我们还有另外的方式。...时间戳转换: 在pandas中,借助unix时间戳转换并不方便,我们可以使用datetime模块的格式化函数来实现,如下所示。...本文涉及的对比操作和相应的解法如上图所示。整体看起来比之前的要“乱”一些,但仔细看看并没有多少内容。 需要指出,关于日期操作,本文只是总结了一些pandas和SQL都有的部分操作,也都是比较常见的。

4.5K20

【小家SQL】MySql数据类型---日期时间类型的使用(含datetime和timestamp的区别) 0000-00-00 00:00:00问题解释

5、timestamp timestamp类型使用4个字节来表示日期和时间。 timestamp类型与dateTime类型显示的格式是一样的。...在查询方面:如果你确实遇到的存储的是字符串,那么请用STR_TO_DATE函数转成日期格式查询,形如: select * from orders where date(str_to_date(`ceate_record_time...如果我们链接Mysql的Url参数上不作为,那么查询就会报错如下: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented...java.sql.Timestamp的错) Java中(至少java.sql.Timestamp这个类)是不能支持0000-00-00 00:00:00这个时间的。...zeroDateTimeBehavior=convertToNull,这样子Sql查出来的结果是null,Java进行封装就没有问题了 2、修改timestamp字段的默认值,不再采用0000-00-

6.8K20

VS 2010 Database tool 查询分析器的小困扰

查询的结果来看显然是不符合查询条件的,因为“C_CREATE_TIME”是等于“2011/2/25 15:40:12 ”,不满足大于“2011/2/25 15:40:12 ”这个日期的条件,于是怀疑自己的...sql语句有问题,是不是日期转换有问题,于是网上找了其他几种方法,问题依旧,折腾了n久后,于是用SQL Server 2008 Management Studio的查询分析器执行。...于是我发现问题所在,Visual Studio 2010 的Database tool 查询分析器有关datetime字段没有显示毫秒,显然 “2011/2/25 15:40:12.110”是大于“2011...查询分析器没有显示毫秒,让我误以为查询出错了。...唉,为这小问题,折腾了我半天。在Visual Studio 2010 的设置里也没找到有关在查询分析器里精确显示毫秒的设置项。

59190

MySQL开发规范之数据类型设计规范

2)SQL设计规范,什么样的SQL是最合理的,也需要提炼SQL质量模型,还得一些通用性,同时具备实用性,否则就都是废话了。...先说说总体的成果,SQL开发规范我是打算拆分为5个部分,包括数据库命名规范,对象结构设计规范,SQL优化设计规范、高并发设计规范和开发规范落地指南,这是循序渐进,从基础进阶落地的内容组织形式。...日期类型 注: 1)普遍情况,建议使用datetime,因为datetime和timestamp的存储占用空间不同,datetime占用8个字节,timestamp占用4个字节,所以说timestamp...范围为:1970-01-01 08:00:012038-01-19 11:14:07 而datetime支持的时间范围则要大很多。...4)日期和时间字段精确度“秒”,建议使用unix时间戳格式存储(数据类型为int),在展示的时候需要注意一下时区问题;每条记录都需要有插入时间字段,如果有需要,可以增加记录修改时间字段;重要的数据记录和数据操作

16920

MySQL中的时间类型

,需要关注:支持时间的类型有:TIME、DATETIME和TIMESTAMP;支持日期的类型有:DATE、DATETIME和TIMESTAMP;支持小数秒的类型有:TIME、DATETIME和TIMESTAMP...----------+| 2022-08-30 14:13:02 |+---------------------+那么另一个处于东四区的客户端C2连接后它的时区仍然是SYSTEM东八区,这样这个客户端查询存储的时间是有问题的...() 日期的数字,从131 DAYNAME() 星期的名字,SundaySaturday DAYOFWEEK() 星期的数字,周日开始,范围是17WEEKDAY...() 星期的数字,周一开始,范围是06DAYOFYEAR() 日期在一整年中的数字,1366 HOUR() 小时数,023 MINUTE...在不涉及不同时区的场景下,直接返回YYYY-MM-DD hh:mm:ss格式即可。在需要使用不同时区的国际化场景中,建议序列化的字符串中带上时区信息,由前端根据用户所处的时区进行展示。

10.4K52

Hive中的Timestamp类型日期与Impala中显示不一致分析(补充)

1.问题描述 ---- Hive表中存储的Timestamp类型的字段日期显示与Impala中查询出来的日期不一致。...关于这个问题前面Fayson也讲过《Hive中的Timestamp类型日期与Impala中显示不一致分析》,在SQL中需要添加from_utc_timestamp函数进行转换,在编写SQL时增加了一定的工作量...3.重启成功后,执行SQL进行查询 可以看到再次执行查询的时候,不需要将时间戳转换到指定的时区,时间戳转换后的时间与原始时间一致。...4.其他问题 ---- 在我们上述测试中,时间戳使用的是int类型存储,需要使用cast函数来将字段转为TimeStamp类型,parquet格式的表进行转换时区也是正常的。...如果表的字段类型默认为TimeStamp类型,则不需要使用cast函数转换,需要注意的是parquet格式的表,在查询的时候任然存在时区的问题,需要在impala daemon命令行高级配置代码段(安全阀

8.2K80

SQL函数 DATEDIFF

从enddate中减去startdate,以确定两个日期之间的日期部分间隔。 描述 DATEDIFF函数返回两个指定日期之间指定日期部分差的整数。日期范围从开始日期开始,结束日期结束。...这些语法变体执行略有不同的操作: Quotes: DATEDIFF('month','2018-02-25',$HOROLOG):在创建缓存查询时,datepart被视为文字。SQL执行文字替换。...这将生成更具体的缓存查询日期表达式格式 startdate和enddate参数可以采用不同的数据类型格式。...无论当前的NLS语言环境是什么,这两种格式都需要一段时间。 时间差异与时间格式无关 DATEDIFF返回以秒和毫秒为单位的时间差,即使当前进程的TimeFormat被设置为不返回秒。...分钟:059分钟。 秒:0 ~ 59。 一个月中的天数必须与月和年相匹配。 例如,日期“02-29”仅在指定的年份为闰年时有效。 无效的日期值将导致SQLCODE -8错误。

3.3K40
领券