如何制定策略以构建高效性能的数据库索引?

2026-05-28 01:100阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2999个文字,预计阅读时间需要12分钟。

如何制定策略以构建高效性能的数据库索引?

高效的索引策略要求独立列的查询条件不是表达式或函数的参数。例如,在MySQL中,如果查询条件如下:

sqlSELECT actor_id FROM sakila.actor WHERE

那么MySQL不会使用索引。独立的列是指索引列不能是表达式或函数的一部分,例如不能是:

- 表达式的一部分,如 `WHERE LENGTH(actor_id)=5`- 函数的参数,如 `WHERE UPPER(actor_id)='ABC'`

正确的使用方式是直接使用列名:

sqlSELECT actor_id FROM sakila.actor WHERE actor_id='ABC'

高性能的索引策略 独立的列 如果查询的列不是独立的,则MySQL就不会使用索引。独立的列是指索引列不能是表达式的一部分,也不能是函数的参数。 如:

select actor_id FROM sakila.actor where actor_id + 1 = 5;

其实屏肉眼你是可以判断出这个actor_id其实就是=4,但是mysql是无法自动解析这个方程式的。这完全是用户行为,我们应该养成习惯,始终将索引列单独放在比较符号的一侧 前缀索引和索引的选择性 有时啊,需要的索引很长的字符列,这样呢会使索引变得大且慢。一个策略是前面提到过的模拟哈希索引。再者呢? 我们可以索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率。 但是 这样会降低索引的选择性:

索引的选择性=不重复的索引值和数据表的记录总数的比值。 索引的选择性越高则查询的效率越高,因为选择性高的会在查找时过滤掉更多的行。

当然对于blob,text,varchar这种很长类型的列,必须使用前缀索引,mysql不允许索引这些列的完整长度。

阅读全文

本文共计2999个文字,预计阅读时间需要12分钟。

如何制定策略以构建高效性能的数据库索引?

高效的索引策略要求独立列的查询条件不是表达式或函数的参数。例如,在MySQL中,如果查询条件如下:

sqlSELECT actor_id FROM sakila.actor WHERE

那么MySQL不会使用索引。独立的列是指索引列不能是表达式或函数的一部分,例如不能是:

- 表达式的一部分,如 `WHERE LENGTH(actor_id)=5`- 函数的参数,如 `WHERE UPPER(actor_id)='ABC'`

正确的使用方式是直接使用列名:

sqlSELECT actor_id FROM sakila.actor WHERE actor_id='ABC'

高性能的索引策略 独立的列 如果查询的列不是独立的,则MySQL就不会使用索引。独立的列是指索引列不能是表达式的一部分,也不能是函数的参数。 如:

select actor_id FROM sakila.actor where actor_id + 1 = 5;

其实屏肉眼你是可以判断出这个actor_id其实就是=4,但是mysql是无法自动解析这个方程式的。这完全是用户行为,我们应该养成习惯,始终将索引列单独放在比较符号的一侧 前缀索引和索引的选择性 有时啊,需要的索引很长的字符列,这样呢会使索引变得大且慢。一个策略是前面提到过的模拟哈希索引。再者呢? 我们可以索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率。 但是 这样会降低索引的选择性:

索引的选择性=不重复的索引值和数据表的记录总数的比值。 索引的选择性越高则查询的效率越高,因为选择性高的会在查找时过滤掉更多的行。

当然对于blob,text,varchar这种很长类型的列,必须使用前缀索引,mysql不允许索引这些列的完整长度。

阅读全文