`
forxinyang
  • 浏览: 6052 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

索引注意事项

    博客分类:
  • Java
 
阅读更多
曾经偷偷的面试了两个单位,都提到了Mysql的优化问题,所以以后要多多学习数据库的优化知识了。建设数据库的优化大概主要就是索引的优化了吧,因为我们不可能修改数据结构的情况下,提高数据库的查询效率似乎也只能用索引了。当然这也是建立在你sql语句写的比较科学的情况下,如果你的sql语句本身就写的比较垃圾,神仙也救不了你!
下边是在网上找到的一些资料,保留下来备用吧
1、创建索引
对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下降。但是也不是什么情况都非得建索引不可,比如性别可能就只有两个值,建索引不仅没什么优势,还会影响到更新速度,这被称为过度索引。
2,复合索引
比如有一条语句是这样的:select * from users where area=’beijing’ and age=22;
如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效率,但是如果在area、age两列上创建复合索引的话将带来更高的效率。如果我们创建了(area, age, salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。
3,索引不会包含有NULL值的列
只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。
4,使用短索引
对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。
5,排序的索引问题
mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
6,like语句操作
一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。
7,不要在列上进行运算
select * from users where YEAR(adddate)<2007;
将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成
select * from users where adddate<‘2007-01-01’;
8,不使用NOT IN和<>操作
NOT IN和<>操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替,id<>3则可使用id>3 or id<3来代替。
分享到:
评论

相关推荐

    MYSQL索引注意事项及其优化

    MYSQL 索引注意事项及其优化 索引是 MySQL 中的一种数据结构,可以提高查询效率。但是,索引也需要合理地使用和优化,否则可能会降低查询效率。下面是 MySQL 索引的分类和优化注意事项。 索引分类 MySQL 中的索引...

    DB2索引及其优化(设计,优化,问题分析,解答,举例)

    DB2索引及其优化 DB2索引设计及其优化是...在本文中,我们讨论了DB2索引的概念、创建索引、建立索引注意事项、索引分类和索引优化等方面的知识点,并提供了一些有用的提示和建议,以帮助读者更好地理解和应用DB2索引。

    MySQL索引类型总结和使用技巧以及注意事项

    在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表: 代码如下:CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了10000条记录,...

    mysql索引使用技巧及注意事项

    本文将深入探讨MySQL索引的使用技巧和注意事项。 一、索引的作用 1. 提高查询效率:索引如同字典的目录,它允许数据库引擎快速定位到所需的数据,避免全表扫描,从而极大地提升了查询速度。 2. 降低磁盘I/O:通过...

    V1.0-sqlServer索引使用总结.docx

    本文档总结了 SQL Server 中索引的使用方法、分类和注意事项,并提供了实践测试的示例代码。 索引的使用目的 索引的使用目的主要是为了提高查询速度和效率。通过创建索引,可以快速地定位到所需的数据,从而减少...

    mysql各种优化

    5. 创建索引注意事项:索引虽能提升查询速度,但也会占用额外空间并增加写操作的开销,需权衡利弊。 四、索引结构 索引的内部结构对性能有很大影响,例如B-Tree索引通过平衡树结构快速定位数据,而Hash索引适合等值...

    HBASE使用注意事项

    ### HBASE使用注意事项详解 #### 一、表设计注意事项 **1. 配置hostname** - **背景**:HBase依赖于Zookeeper进行服务管理,两者均基于域名解析来识别节点。 - **操作**:确保配置文件中正确设置了`hostname`,...

    MySQL 索引使用有哪些注意事项呢?.md

    MySQL 索引使用有哪些注意事项呢?.md

    mysql的相关优化方法以及原理

    #### 六、全文索引注意事项 - 全文索引仅对MyISAM存储引擎有效。 - MySQL内置的全文索引主要针对英文,对于中文等其他语言的支持较差,可以通过第三方插件如Sphinx来增强全文索引的功能。 - 使用全文索引时,应避免...

    MYSQL索引建立需要注意以下几点细节

    以下是对创建MySQL索引时需要注意的一些重要细节的深入解析: 1. **建立索引的时机**:索引应当在那些频繁出现在查询条件、排序或分组中的字段上创建。例如,如果一个字段经常用于`SELECT`查询的`WHERE`子句,那么...

    SQL编程注意事项

    以下是一些关键知识点,它们涵盖了标题"SQL编程注意事项"所提及的要点。 1. NULL值处理:在SQL中,NULL表示未知或无值,与0、空字符串等不同。在进行比较和计算时,NULL值需要特别对待。例如,`NULL = NULL`返回的...

    数据库优化

    - **创建索引注意事项**:应考虑索引的数量与复杂性之间的平衡,过多的索引会降低写入性能。 #### 索引结构 不同的索引结构适用于不同的应用场景。例如B树适用于范围查询,而哈希索引则更适合等值查询。 #### ...

    软件界面设计注意事项

    界面设计的注意事项主要涉及易用性、规范性、帮助设施和合理性四个核心方面。 1. 易用性: - 按钮命名应清晰,避免模糊不清的词汇,确保用户能一目了然。 - 使用框架将同类功能按钮分组,支持快捷键操作,例如...

    常见(MySQL)面试题(含答案).docx

    9. **索引注意事项**: - 使用适合的数据类型,避免全表扫描。 - 避免在索引列上使用函数或表达式。 - 考虑选择合适的索引类型,如主键索引、唯一索引、全文索引等。 10. **CHAR与VARCHAR的区别**: - CHAR固定...

    数据库索引的优缺点及使用时的注意事项.docx

    **使用时的注意事项:** 1. **避免使用不等号和函数**:如`!=`、`&gt;`、`、`BETWEEN`、`LIKE`、`REGEXP`等,这些操作可能导致索引无法被有效利用。 2. **JOIN操作需匹配数据类型**:在JOIN中,主键和外键的数据类型...

    mysql优化总结

    - **索引注意事项** - 频繁作为查询条件的字段适合创建索引。 - 唯一性较差的字段不宜单独创建索引。 - 更新非常频繁的字段不适合创建索引。 - 不出现在WHERE子句中的字段无需创建索引。 - **索引类型** -...

    oracle在线创建索引和重组索引

    下面我们将详细介绍在线创建索引和重组索引的步骤和注意事项。 一、在线创建索引 在线创建索引可以提高查询性能,但是需要评估该索引的必要性和可能对现有语句的影响。如果不是紧急的大索引,最好在维护时间操作。...

    索引的原理及索引建立的注意事项

    聚集索引,数据实际上是按顺序存储的,数据页就在索引页上。就好像参考手册将所有主题按顺序编排一样。一旦找到了所要搜索的数据,就完成了这次搜索,对于非聚集索引,索引是安全独立于数据本身结构的,在索引中找到...

    数据库编程注意事项

    ### 数据库编程注意事项详解 #### 一、常用资料索引及论坛 在数据库编程领域,获取高质量的学习资源和参与活跃的社区交流对于提高技术水平至关重要。本文档提到了几个非常有用的资源,包括Oracle中国用户组和其他...

Global site tag (gtag.js) - Google Analytics