1. 搜索的索引列,不一定是所要选择的列。换句话说,最适合索引的列是出现在 WHERE 子
句中的列,或连接子句中指定的列,而不是出现在 SELECT 关键字后的选择列表中的列。
2. 使用惟一索引。考虑某列中值的分布。对于惟一值的列,索引的效果最好,而具有多个
重复值的列,其索引效果最差。例如,存放年龄的列具有不同值,很容易区分 各 行 。
而用来记录性别的列,只含有“ M”和“F”,则对此列进行索引没有多大用处(不管
搜索哪个值,都会得出大约一半的行)
3. 使用短索引。如果对串列进行索引,应该指定一个前缀长度,只要有可能就应该这样做 。
例如,如果有一个 CHAR(200) 列,如果在前 10 个或 20 个字符内,多数值是惟一的,
那么就不要对整个列进行索引。对前 10 个或 20 个字符进行索引能够节省大量索引空
间,也可能会使查询更快。较小的索引涉及的磁盘 I/O 较少,较短的值比较起来更快。
更为重要的是,对于较短的键值,索引高速缓存中的块能容纳更多的键值,因此,MySQL
也可以在内存中容纳更多的值。这增加 了找到行而不用读取索引中较多块的可能性。
(当然,应该利用一些常识。如仅用列值的第一个字符进行索引是不可能有多大好处的 ,
因为这个索引中不会有许多不 同 的 值 。)
4. 利用最左前缀。在创建 一个 n 列的索引时,实际是创建了 MySQL 可利用的 n 个索引。
多列索引可起几个索引的作用,因为可利用索引中最左边的列集来匹配行。这样的列集
称为最左前缀。(这与索引一个列的前缀不同,索引一个列的前缀是利用该的前 n 个字
符作为索引值。)
5. 不要过度索引。不要以为索引“越多越好”,什么东西都用索引是错的。每个额外的索
引都要占用额外的磁盘空间,并降低写操作的性能,这一点我们前面已经介绍 过。在
修改表的内容时,索引必须进行更新,有时可能需要重构,因此,索引越多,所花的时
间越长。如果有一个索引很少利用或从不使用,那么会不必要地减缓表 的修改速度。
此外,MySQL 在生成一个执行计划时,要考虑各个索引,这也要费时间。创建多余的索
引给查询优化带来了更多的工作。索引太多,也可能会使 MySQL 选择不到所要使用的
最好索引。只保持所需的索引有利于查询优化。如果想给已索引的表增加索引,应该考
虑所要增加的索引是否是现有多列索引的最左 索引。如果是,则就不要费力去增加这
个索引了,因为已经有了。
6. 考虑在列上进行的比较类型。索引可用于“ <”、“ < = ”、“ = ”、“ > =”、“ >
”和 BETWEEN 运算。在模式具有一个直接量前缀时,索引也用于 LIKE 运算。如果只
将某个列用于其他类型的运算时(如 STRCMP( )),对其进行索引没有价值。
相关推荐
数据库索引设计原则 数据库索引设计原则是 Oracle 数据库管理系统中的一项重要技术,旨在提高数据库的查询效率和性能。以下是数据库索引设计原则的详细解释。 一、基本原则 数据库索引设计原则的基本原则是确保...
三、索引设计原则 1. 针对频繁查询的列创建索引:根据SQL语句的执行计划,找出最常用于查询的列来建立索引。 2. 平衡读写性能:在考虑索引数量时,需要平衡读取速度和写入速度,避免过度索引。 3. 复合索引:对于多...
那么索引设计原则又是怎样的? 1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。 例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。...
三、索引设计原则 1. 基于查询优化:索引应建立在经常出现在WHERE子句中的列上,尤其是那些出现在JOIN条件和ORDER BY语句中的列。 2. 唯一性:尽可能创建唯一索引,这能确保索引的效率和数据库的完整性。 3. 避免...
在这个主题中,我们将深入探讨数据库索引的基础概念、设计原则、优化策略以及实际应用。 一、索引基础知识 索引是数据库系统为了加速查询而创建的数据结构,类似于书籍的目录,它提供了快速访问特定数据记录的途径...
2. **索引设计原则** - **选择合适的索引列**:通常选择在查询中频繁用作WHERE子句的列,或者用于JOIN操作的列。 - **考虑数据分布**:索引列应具有较高的区分度,以减少索引页的分裂。 - **避免过量索引**:虽然...
三、索引设计原则 1. 索引列的选择:选择经常出现在WHERE子句中的列。 2. 索引顺序:将最常筛选的列放在索引前面。 3. 数据分布:考虑列的基数(不同值的数量),基数越高,索引效果越好。 4. 避免NULL:NULL值会...
通过理解数据模型、应用索引设计原则,并结合实际操作中的性能监控,我们可以不断优化索引,提升应用的响应速度和用户体验。在实际开发过程中,要兼顾索引带来的查询速度提升和额外的存储及维护成本,寻找最佳平衡点...
索引设计原则 ---------------- ###惟一性索引的值是惟一的,可以更快速通过索引确定某条记录。 ###为经常需要排序、分组、联合操作的字段建立索引 ###为常作为查询条件的字段建立索引 ###限制索引的数目 索引...
3. **索引设计原则** - **选择性**:索引列的选择性越高,查询性能提升越显著。选择性是指列中不同值的比例,比例越大,索引效果越好。 - **查询覆盖率**:设计索引时应考虑实际查询需求,确保索引能够覆盖大部分...
**索引设计原则**:良好的索引设计是提高数据库和应用程序性能的关键。设计索引时需要在查询速度与更新所需的开销之间取得平衡。较窄的索引(即包含较少列的索引)通常需要较少的磁盘空间和维护成本,而较宽的索引...
综上,《Oracle与MySQL数据库索引设计与优化》一书详细介绍了这两个数据库系统的索引特性、设计原则以及优化方法,对于数据库管理员和开发人员来说是一本极具价值的参考书。通过学习,读者可以更好地理解和应用索引...
九、索引设计原则 1. 对经常出现在`WHERE`子句中的列创建索引。 2. 对联合索引的设计,遵循“最左前缀原则”,即查询条件应按索引顺序排列。 3. 考虑列的排序需求,为`ORDER BY`和`GROUP BY`涉及的列创建索引。 ...
### SQL Server索引设计经验谈 #### 摘要 本文旨在探讨Microsoft SQL Server中的索引设计技巧,尤其是如何通过合理的索引策略来优化查询性能。通过对聚集索引与非聚集索引的选择、索引列的排序方式、填充因子的...
### 浅谈MYSQL中的索引优化 #### 一、MySQL中的索引与B+树 在MySQL数据库系统中,索引被广泛应用于提高数据检索的效率。...此外,遵循合理的索引设计原则,可以在确保高效查询的同时,避免不必要的资源消耗。
#### 三、索引设计原则 1. **唯一性索引**:对于具有唯一性的字段(如学号),创建唯一性索引可以更快地定位到特定记录。这对于提高查询效率至关重要。 2. **排序与分组**:经常需要进行排序、分组操作的字段应该...
二、索引设计原则 1. 考虑查询频率:优先为经常出现在WHERE子句中的列创建索引。 2. 数据分布:索引效果受数据分布影响,对于选择性高的列(独特值多的列),索引效果更好。 3. 避免冗余索引:不要为同一列创建多个...