Skip to content

Latest commit

 

History

History
22 lines (16 loc) · 2.35 KB

File metadata and controls

22 lines (16 loc) · 2.35 KB

MySQL

慢查询

  1. 没有使用索引:如果查询语句中没有使用索引,MySQL 将会进行全表扫描,这会导致查询效率低下。
  2. 大量数据:如果查询的数据量很大,MySQL 需要进行大量的磁盘 I/O 操作,从而降低查询效率。
  3. 数据类型不匹配:如果查询条件中与表中列的数据类型不匹配,则 MySQL 会对表中的每行数据进行类型转换,这会导致查询变慢。
  4. 两个表的字符集不一样
  5. 锁等待:如果查询语句需要对表或行进行锁定,而这些锁被其他客户端占用,则 MySQL 将会等待这些锁被释放后才能继续执行查询,这会导致查询变慢。
  6. 慢查询日志开启:如果在 MySQL 中开启了慢查询日志,那么所有执行时间超过阈值的查询都会被记录下来,这会产生一定的性能开销。

MySQL 中主键(primary key)和唯一索引(unique index)有什么区别

MySQL 中主键(primary key)和唯一索引(unique index)都可以用来唯一标识一条记录,但是它们之间有几个重要的区别。

  1. 主键是一种特殊的唯一索引,它要求索引列中的值必须唯一,而且不能为 NULL。每个表只能有一个主键,主键可以由一个或多个列组成。
  2. 唯一索引允许在索引列中插入 NULL 值,但是不允许在索引列中插入重复的值。每个表可以拥有多个唯一索引,唯一索引也可以由一个或多个列组成。
  3. 主键通常被用作数据表的主要关键字段,可以作为外键引用到其他数据表中,因此应该选择一个易于理解、稳定且不易变化的值作为主键。唯一索引通常用于保证数据表中某个字段的唯一性,例如用户账号、邮箱等,这些字段往往需要快速查找和修改。
  4. 在执行查询语句时,MySQL 会自动使用主键索引,因此主键比唯一索引的查询速度更快。此外,与普通索引相比,主键和唯一索引的读写性能都更优秀,因为它们具有较高的唯一性和较小的存储空间。

因此,在 MySQL 中,如果需要用来标识一条记录的唯一性,并且该字段不能为 NULL,应该使用主键。如果需要保证数据表中某个字段的唯一性,但是该字段允许 NULL 值,或者需要同时维护其它索引,应该使用唯一索引。