美文网首页程序员
Mysql的奇淫怪技

Mysql的奇淫怪技

作者: self_blank | 来源:发表于2018-05-21 22:22 被阅读61次

在项目开发的过程中,包括测试人员提出的一些bug,慢慢总结出一些Mysql的使用经验。

1. decimal类型的字段总长度包括了精度长度。

比如decimal(10, 2),则表示小数点左边为8位,右边为2位。decimal类型字段常用于存储精度要求高的数字。

2. 字段默认不区分大小写。

测试跟我说,产品名判断是否重名时有bug,不能区分大小写。存在名为test的产品,再取TEST时竟然提示重名。

解决方法有几种:

(1)添加binary关键字

SELECT * FROM table WHERE BINARY name = 'test';

(2)设置字符集为utf8_bin 

utf8_bin:区分大小写;    utf8_general_ci:不区分大小写

3. 当有GROUP BY时,不能直接用COUNT(*)计算行数。

比如:

SELECT * FROM table WHERE conditions GROUP BY column_1, column_2 LIMIT pagestart, pagesize;

无法用以下sql语句来计算行数:

SELECT COUNT(*) FROM table WHERE conditions GROUP BY column_1, column_2;

需将GROUP BY的部分放入COUNT里,即改成:

SELECT COUNT(DISTINCT column_1, column_2) FROM table WHERE conditions;

4.用LIMIT来实现分页,需要两条sql语句。

(1)用LIMIT offset, pagesize来实现分页;

(2)同时要获取同等sql(去除分页条件)结果的总数量,来给前端进行分页计算。

这里有个优化sql的地方:LIMIT的offset越大,效率越低

原本:

SELECT id FROM table LIMIT 100000, 10;

改进:

SELECT id FROM table WHERE id > 100000 LIMIT 10;

5. datetime类型字段自动更新时间的问题。

项目发现一个bug,修改表中数据会记录修改时间updated_at,结果创建时间created_at也跟着更新,导致某个定时任务的逻辑判断出了问题。

当表中有datetime类型的字段a和b,其中b字段设置了ON UPDATE CURRENT_TIMESTAMP。当修改了字段a时,b会自动更新为最新时间。

所以尽量把datetime类型字段的ON UPDATE CURRENT_TIMESTAMP自动设置更新时间这个特性去掉,由业务层去设置时间。

6.存储json字符串可以用json类型字段。

相关文章

  • Mysql的奇淫怪技

    在项目开发的过程中,包括测试人员提出的一些bug,慢慢总结出一些Mysql的使用经验。 1. decimal类型的...

  • 坑·集

    记录NOIP刷题时碰到的巨坑 或者 诸如A+B Problem各种奇淫怪技 重名: 极端定义域 i,j重用 sor...

  • iOS的各种奇淫怪技, 不定时更新

    本文仅记录日常iOS开发的一些技巧, 不定时更新, 最新的置顶, 欢迎关注打赏订阅 5.记录百度地图的一个bug:...

  • Mysql的奇淫巧技

    ``` ###查看时区 show variables like '%time_zone%'; ###日期转为时间戳...

  • iOS开发的一些奇巧淫技

    iOS开发的一些奇巧淫技 iOS开发的一些奇巧淫技

  • 数组的常用方法

    总结下数组的常用方法和奇巧淫技(奇巧淫技主要是reduce~)。 数组操作首先要注意且牢记splice、sort、...

  • 关圣帝君戒淫经注解(续一)

    引用《般若文海》里的〈戒淫文集〉 百业,各种行业。耍,变化。千奇,即千奇百怪,形形色色。花招,让人眼花潦乱之招数。...

  • 奇巧淫技-2

    摘自:http://www.cocoachina.com/ios/20150210/11130.html CGfl...

  • 奇巧淫技-1

    本文摘自:http://www.cocoachina.com/ios/20141231/10783.html bl...

  • Sketchup奇巧淫技

    代开坑

网友评论

    本文标题:Mysql的奇淫怪技

    本文链接:https://www.haomeiwen.com/subject/ouwjaxtx.html