-
表的垂直拆分的原则 所谓垂直拆分,就是把原来一个有很多列的表拆分成多个表解决表的宽度问题,通常拆分原则如下: 1、把不常用的字段单独存放到一个表中 2、把大字段独立存放到一个表中 3、把经常一起使用的字段放到一起查看全部
-
反范式化:为了查询效率的考虑,把原本符合第三范式的表适当增加冗余,以达到优化查询效率的目的。以空间换取时间的操作。查看全部
-
121查看全部
-
数据表结构优化 第三范式:要求数据库中不存在非关键字段对任意候选关键字的传递函数依赖 不符合第三范式要求的表存在以下问题: 1.数据冗余:(分类、分类描述)对于每一个商品都会进行记录 2.数据插入异常 3.数据更新异常 4.数据删除异常查看全部
-
使用bigint 存储ip地址INET_ATON INET_NTOA查看全部
-
使用int类型存储日期时间,利用FROM_UNIXTIME(),UNIX_TIMESEAMP()两个函数转换查看全部
-
冗余索引(将已经建立索引的列又和另外一个列一起组合创建了一个索引)如下图所示:查看全部
-
过多的索引不但影响写入,而且影响查询,索引越多,分析越慢 如何找到重复和多余的索引,主键已经是索引了,所以primay key 的主键不用再设置unique唯一索引了 冗余索引,是指多个索引的前缀列相同,innodb会在每个索引后面自动加上主键信息 冗余索引查询工具 pt-duplicate-key-checker查看全部
-
选择合适的索引列<br> 1.在where,group by,order by,on从句中出现的列<br> 2.索引字段越小越好(因为数据库的存储单位是页,一页中能存下的数据越多越好 )<br> 3.离散度大得列放在联合索引前面<br> select count(distinct customer_id), count(distinct staff_id) from payment;<br> 查看离散度 通过统计不同的列值来实现 count越大 离散程度越高 离散度,我的理解就是唯一性了,比如主键,绝对是离散度最大的,而一些用来标识状态标识的列,基本只有几个可选项,离散度就很小查看全部
-
优化步骤2: 使用这种方式有一个限制,就是主键一定要顺序排序和连续的,如果主键出现空缺可能会导致最终页面上显示的列表不足5条,解决办法是附加一列,保证这一列是自增的并增加索引就可以了查看全部
-
使用索引或者主键来进行order by操作查看全部
-
limit常用于分页处理,时常会伴随order by从句使用,因此大多时候会使用Filesorts这样会造成大量的io问题 1.使用有索引的列或主键进行order by操作 2.记录上次返回的主键,在下次查询时使用主键过滤 使用这种方式有一个限制,就是主键一定要顺序排序和连续的,如果主键出现空缺可能会导致最终页面上显示的列表不足5条,解决办法是附加一列,保证这一列是自增的并增加索引就可以了查看全部
-
group by可能会出现临时表(Using temporary),文件排序(Using filesort)等,影响效率。 可以通过关联的子查询,来避免产生临时表和文件排序,可以节省io 改写前 select actor.first_name,actor.last_name,count(*) from sakila.film_actor inner join sakila.actor using(actor_id) group by film_actor.actor_id; 改写后 select actor.first_name,actor.last_name,c.cnt from sakila.actor inner join( select actor_id,count(*) as cnt from sakila.film_actor group by actor_id )as c using(actor_id);查看全部
-
对于子查询的优化,可以优化成为join方式查询, 但是这样子查询的话如果是一对多的关系,那么就要注意去重, 可以用distinct关键字去重查看全部
-
count(列名)统计的是不包括NULL在内的行数,而count(*)则是统计所有,所以为了包含NULL,在写法上应该是count(列名 OR NULL)查看全部
举报
0/150
提交
取消