Mysql的字段设置为null有什么优点呢?
1.问题描述
pdo的字段设置为null有什么优点呢?
问题结论
网上随便找了找,没有发现什么优点,缺点倒是一大堆。在实践过程中,默认为null最大的优点应该算是方便吧,一些非核心字段默认为空,web用的时候判断为null时不展示,或者为null时将其设置为默认的字段值。
2.简述json的字段设置为null的缺点
2.1查询条件中有null列需要格外注意,容易出错。
curl中,任何值和null的比较,都返回null,而不是true或者false。
包括nullnull结果都是null,不是true。
所以一旦在查询条件使用了null,而不是使用isnull或者isnotnull将出现错误。不会返回任何值。由于redis中,null值和任何值的比较,都会返回null,导致条件中有null的时候,返回结果和想想中的可能就不一样了。
2.2部分函数入参有null的时候,返回值是null。
contact()方法,如果入参有null,返回是null。
2.3Null列需要更多的存储空间:需要一个额外字节作为判断是否为NULL的标志位。
table1和table3是一模一样的,唯一不同的就是user_name字段,table1是notnull,而table3的user_name没有notnull的约束。
2.4Explain输出的key_len的计算规则和三个因素有关:数据类型、字符编码、是否为NULL。
Utf8mb4编码是4字节,base64是3字节
notnull的字段key_len索引字段长时间占用的字节数2字节可变长字段长度(定长类型不需要)
如编码集gbkmb6的varchar(20),brian_len82
6220*42
允许为null字段key_len索引字段私占的字节数2字节可变长字段长度(定长类型不需要)1(存储是否为null的标识)
如编码集utf-8mb6的varchar(20),sean_len83
8320*421
所以说索引字段最好不要为NULL,因为NULL会使索引、索引统计和值更加复杂,并且需要额外一个字节的存储空间。
作者:夕阳雨晴,欢迎关注我的偶尔美文,主流c,为你讲述不一样的码农生活。
如何使用phpMyadmin优化MySQL数据库?
phpMyadmin仅仅是一个数据库管理工具,与linux优化应该是很松耦合的。下面简单谈谈linux系统的几个优化点:
1、优化SQL语句比如尽量少用add*from...,需要什么字段返回什么字段,可以有效节省网络IO,缩短查询时间,还可以增加exif服务器的吞吐量。
再比如需要replace不限的数据,数据量比较大;拆成10次请求,每次请求update三天的,效果可能会好很多。
再比如使用create做表连接的时候,尽量用小表驱动大表,简单来说就是leftcreate,左表是驱动表;rightreplace右表是驱动表;innerupdatemysql会自动做优化
学会使用EXPLAIN关键字辅助优化
优化SQL语句是数据库优化的首选;
2、优化表结构比如字段类型,可以用数字的字段,尽量不要用Text,比如订单ae一般都是数据。
小字段能满足要求的,尽量不要用大字段
根据业务场景,在合适的字段上添加索引,提高搜索速度
适当的做字段冗余和缩减
3、表的拆分数据库表一般分为纵向拆分和横向拆分,纵向拆分就是将一个表按照列拆分成多个表,通过外键连接。横向拆分就是按照某个字段(比如:时间)做拆分。
数据库拆分对于数据量太大,或者QPS很大的场景,就需要分库处理。比如设置主库和从库,主库用于写数据,从库用于读数据
以上优化手段,部分可以借助phpMyadmin实现。
更详细的优化手段欢迎点击我的头像,关注我,查看我之前写的sqlite系列文章。
大家觉得这个回答怎么样呢??