count(*)、count(1)、count(column)的区别
count()对行的数目进行计算,包含 NULL
count(column)对特定的列的值具有的行数进行计算,不包含 NULL 值。
count()还有一种使用方式,count(1)这个用法和 count()的结果是一样的。
什么是索引?
数据库索引,是数据库管理系统中一个排序的数据结构,索引的实现通常使用 B 树及其变种 B+树。
在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构, 就是索引。
索引的作用?
协助快速查询、更新数据库表中数据。为表设置索引要付出代价的:
一是增加了数据库的存储空间
二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。
索引的优缺点
创建索引可以大大提高系统的性能(优点):
- 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
- 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
- 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
- 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时
间。 - 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 增加索引也有许多不利的方面(缺点):
- 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
- 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空
间,如果要建立聚簇索引,那么需要的空间就会更大。 - 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
什么样的字段适合建索引?
唯一、不为空、经常被查询的字段