51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2677|回复: 3
打印 上一主题 下一主题

[转贴] 盘点Mysql中容易被我们误会的地方

[复制链接]
  • TA的每日心情
    擦汗
    前天 08:59
  • 签到天数: 1021 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2016-3-22 11:38:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

    引语:mysql作为数据库的一大主力军,到处存在于我们各种系统中,相信大家都不陌生!但是,你知道你能用不代表你知道细节,那我们就来盘点盘点其中一些我们平时不太注意的地方,一来为了有趣,二来为了不让自己踩坑。
      声明:要想知道细节,那就去阅读源码,我实在没那本事,只能从片面上来说一些事!
      1. 不区分大小写(字段名)
      mysql的查询字段名不区分大小写,但是查询的内容是要区分大小写的,所以能用下划线命名的就不要用大小写来区分命名了,如:
      SELECT uid,v_state FROM all_user WHERE username = 'sunyue';
      SELECT uid,v_state FROM all_user WHERE USERNAME = 'sunyue';            //与上一个语句结果一样,字段不区分
      SELECT uid,v_state FROM all_user WHERE USERNAME = 'SUNYUE';            //查不到信息,内容要区分大小写
      2. 模糊匹配([_]匹配任意字符)
      虽说模糊匹配有点正则的意思,但是你并不能像正则一样自由地在数据库里进行匹配,做到尽量简化匹配就好!(附名词:全文检索sphinx)
      SELECT uid,v_state FROM all_user WHERE USERNAME LIKE 'su_yue';    //下划线[_]匹配任意单个字符
      SELECT uid,v_state FROM all_user WHERE USERNAME LIKE 'su%yue';    //%匹配任意多个字符
      SELECT uid,v_state FROM all_user WHERE USERNAME NOT LIKE 'su%';        //not like取不包含的信息
      3. 怎样猜测一个功能
      mysql作为一个关系型数据库,面向的是普通的开发者,所以一切尽可能做到人性化。所以,如果你不知道某个功能是什么,那么,也许你可以猜得出来,因为,如果一个功能让别人无法猜出个大概,那么也许,他就是失败的设计。对于mysql,只要你英语水平稍微好一点点,就能很轻松的想到关系查询应该怎么写。所以,猜测的能力,在于你英语的水平,哈哈哈!!!
      4. replace into 语法
      replace into 是一个很粗暴的插入方式,不过在适当的场景使用也是很有必要的,比如一些需要随时覆盖性写入的数据,就应该使用replace, 但是对于一些自增型的表,则应尽量避免使用,因为这样会是对ID的一种浪费,也许没必要使用replace.
      5. insert into on dumplicate key update
      这个写法相对来说就温柔多了,但是速度肯定是慢一点的,据说只有mysql才有这个特性哦,如果你不想在插入前去判断一下是否已存在该数据,也许这是一个不错的选择!
      6. explain 语法
      这是一个检查查询效果的有效方式,其实我本人很少使用这功能,但是,如果一个开发者经常使用这功能,那么,我相信,他本人肯定是个牛掰的人。通过这个命令,可以判断出你写的语句是否是优化的,如果不是,方向是什么。应该说,你用得多了,自己自然就知道结果了,还是多用用吧!
      7. 索引长度
      myisam的索引长度最大为1000字节,innodb的索引长度最大为767字节!注意使用哦,超出范围,则走出预料!
      8. 库的复制
      1. 直接数据mysql自带的数据库备份恢复命令;2. 直接拷贝文件到目的服务器(注意进程占用问题);3. 使用工具进行同步;个人感觉第二种方式最简单!
      9. 分区
      对于一些可能会很大的表,需要进行分区操作,如果有这方面的需求,需要在最开始就添加至少一个分区,否则后期将无法操作分区。(至少我是这么认为的)
      10. 慢查询
      慢查询,这是一个对性能的监控问题,如果服务器表现太差,排查问题时,有这种慢查询的记录,排查起来将事半功倍!
      11. binlog
      binlog,一般都会用到这功能,对于数据恢复,数据操作记录等等有很必要功用!
      12. 其他应该要知道的视图、存储过程、事件...
      视图、事件等,这些都是一些高级应用,我发现很多项目根本不存在这种应用,到少我遇到的项目都几乎不涉及或者涉及了也是别人随便做做!但是高级功能还是要了解的,不管有没有用!
      13. 可使用的工具
      phpMyAdmin, 作为远程安全操作数据库的方式,还是很不错的,但是作为本地操作的话,实在有点笨拙;sqlyog, 界面虽古板,但是还是比较方便的;navicat, 比较专业化,不过你得适应他的各种表现形式;命令行,我想应该不会有人直接使用命令行进行操作吧,不过,命令行才是根本呢!
      需要加深的东西很多,如果有时间能力,应该深入源码!!


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-17 22:50
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]测试连长

    4#
    发表于 2016-5-12 17:19:01 | 只看该作者
    谢谢楼主的指点 学习了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-17 22:50
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]测试连长

    3#
    发表于 2016-5-12 17:18:53 | 只看该作者
    谢谢楼主的指点 学习了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2020-8-4 11:02
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2016-3-28 09:09:24 | 只看该作者
    学习,感谢分享
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-21 22:23 , Processed in 0.070920 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表