MySQL面试题, MySQL 中 count*,count1,count字段名 分别有什么区别?
MySQL面试题, MySQL 中 count*,count1,count字段名 分别有什么区别?
QA
Step 1
Q:: MySQL 中 count(*)、count(1)、count(字段名)
分别有什么区别?
A:: 在 MySQL 中,count(*)、count(1)、count(字段名)
主要用于统计行数,区别如下:
1. count(*)
:统计表中所有的行数,包括值为 NULL 的行。执行速度通常最快,因为它是由数据库优化器专门优化过的。
2. count(1):与 count(*) 类似,也统计表中所有的行数,包括 NULL 行。区别在于这里用 1 代替了列名。对于某些数据库系统,count(1) 和 count(*)
的性能几乎相同。
3. count(字段名)
:统计指定字段非 NULL 的行数。如果字段名对应的列包含 NULL 值,则这些行不会被计数。
Step 2
Q:: MySQL 索引的类型有哪些?
A:: MySQL 支持多种类型的索引,主要包括:
1.
普通索引:即普通的索引,没有任何限制条件。
2.
唯一索引:索引列的值必须唯一,但允许有一个 NULL 值。
3.
主键索引:主键是一种特殊的唯一索引,不允许有 NULL 值。
4.
全文索引:主要用于全文搜索,可以对文本字段进行索引。
5.
组合索引:单个索引包含多个列。
Step 3
Q:: MySQL 中事务的四个特性 (ACID)
是什么?
A:: MySQL 事务具有四个主要特性,称为 ACID 属性:
1. 原子性 (Atomicity)
:事务是一个不可分割的工作单位,事务中的操作要么全部发生,要么全部不发生。
2. 一致性 (Consistency)
:事务执行前后,数据库都保持一致的状态。
3. 隔离性 (Isolation)
:事务的执行是相互隔离的,一个事务不应该影响其他事务的执行。
4. 持久性 (Durability)
:事务执行完成后,其对数据库的修改是永久性的。