MySQL不常用、易忽略的小知识
2024-08-24 12:53:57
笔者从事开发也有一段时间了,关于数据库方面的一些小知识在这里总结一下
1、count(*),count(1)与count(column)区别
count(*)对行的数目进行计算,包含NULL
count(1)对行的数目进行计算,包含NULL
count(column)对特定的列的值具有的行数进行计算,不包含NULL值。
所以count(1)这个用法和count(*)的结果是一样的。
注意:
如果表没有主键,那么count(1)比count(*)快。
如果有主键,那么count(主键,联合主键)比count(*)快。
如果表只有一个字段,count(*)最快。
count(1)跟count(主键)一样,只扫描主键。count(*)跟count(非主键)一样,扫描整个表。明显前者更快一些。
2、mysql日期加减
获取当前日期时间函数 now() 和 sysdate():
SELECT now(), sleep(3), now();
结果是
mysql> select sysdate(), sleep(3), sysdate();
结果是
可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。
sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。
mysql> select curdate(); #获得当前日期(date)函数:curdate()
mysql> select curtime(); #获得当前时间(time)函数:curtime()
为日期增加一个时间间隔:date_add()
mysql> SELECT date_add('2017-12-25 17:43:44', interval 1 day);
结果为:2017-12-26 17:43:44
类似的还有:
set @dt = now(); select date_add(@dt, interval 1 day); -- add 1 day
select date_add(@dt, interval 1 hour); -- add 1 hour
select date_add(@dt, interval 1 minute); -- ...
select date_add(@dt, interval 1 second);
select date_add(@dt, interval 1 microsecond);
select date_add(@dt, interval 1 week);
select date_add(@dt, interval 1 month);
select date_add(@dt, interval 1 quarter);
select date_add(@dt, interval 1 year); select date_add(@dt, interval -1 day); -- sub 1 day
最新文章
- Xamarin.Android-捕获未处理异常(全局异常)
- Windows内核 语言选择注意点
- Leetcode#79 Word Search
- MIS框架开发计划
- js控制键盘按键(回车、空格)
- android sql Cursor
- 转:jmeter性能测试---登录百度进行搜索
- 基于python2.7通过boto3实现ec2表格化
- NOI2009 植物大战僵尸
- 【转载】C#工具类:实现文件操作File的工具类
- [心得] 如何利用liquibase進行資料庫版本控制 - 實際練習
- 41_redux_counter应用_react-redux版本
- DWM1000 定位数据收发以及定位算法
- Android开发之五大布局篇
- ubuntu16.04搭建geodjango+postgresql+postgis的WebGIS框架(三)加载空间数据
- 第二节:创建模型,使用Code First,配置映射关系
- Delphi窗体部分属性
- apache -- xampp配置虚拟主机
- WPF透明窗体不支持缩放解决方案
- Spark Streaming的使用——转载