`
liliang_xf
  • 浏览: 62665 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论
  • yangqk1: 不知道楼主还在关注这个么,你做的这个项目还在继续么。我真正研究 ...
    webim
  • 周超亿: 你好,我想请问下, http://code.faqee.com ...
    webim
  • 周超亿: 你好,能不能把项目打包发给我一份,谢谢 Email:zhouc ...
    webim
  • liliang_xf: SQL子查询,连接查询,数据汇总,GROUP BY,ORDER ...
    sql的
  • liliang_xf: http://www.ibm.com/developerwor ...
    webim

Mysql索引优化

阅读更多

mysql的优化可以从硬件设备的选择、操作系统、数据库结构设计、SQL查询、应用程序各个方面进行y优化,这里只从数据库的设计及查询语句方面进行优化。

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来代替。


分享到:
评论

相关推荐

    04-VIP-Mysql索引优化实战一.pdf

    MySQL索引优化是数据库性能提升的关键环节,本篇主要探讨了几个关于MySQL索引使用和优化的重要知识点。 首先,创建了一个名为`employees`的员工记录表,其中包含`id`(主键)、`name`、`age`、`position`和`hire_...

    MySQL索引优化课件

    MySQL索引优化是数据库性能提升的关键技术之一,尤其在处理大量数据时,高效索引能够显著加快查询速度,降低服务器负载。本课件主要聚焦于MySQL数据库的索引原理、优化策略以及相关存储过程和触发器的应用。 首先,...

    mysql索引优化分享

    关于mysql索引一些优化介绍与创建原则,还有对order by排序的算法的介绍等等

    Mysql索引优化案例.pdf

    Mysql索引优化案例 在对数据库进行操作时,尤其是在处理包含大量数据的表时,查询的性能问题是一个常见且重要的话题。在实际工作中,对于Mysql数据库进行索引优化是提高查询效率、减少查询时间的重要手段。本案例将...

    Mysql索引优化解决方案.doc

    "Mysql索引优化解决方案" MySQL索引是帮助MySQL高效获取数据的数据结构。MySQL在存储数据之外,还维护着满足特定查找算法的数据结构,这些数据结构以某种引用(指向)表中的数据,这样我们就可以通过数据结构上实现...

    mysql索引优化.xmind

    mysql索引优化思维导图

    mysql的索引优化

    ### MySQL的索引优化 #### 一、索引的基本概念 索引是在数据库表中用于提高数据检索效率的重要工具。简单来说,索引就像是图书的目录页,可以帮助用户快速定位到所需的信息,而无需逐页查找。对于MySQL而言,所有...

    mysql索引优化深入1

    MySQL索引优化是数据库性能提升的关键之一。在深入理解索引优化的过程中,我们需要关注几个核心概念,如索引类型、键长度(key_len)、参考值(ref)以及全表扫描(type=ALL)和文件排序(Using filesort)。 首先...

    Mysql索引优化实战.zip

    本资料“Mysql索引优化实战”旨在深入探讨如何通过有效的索引策略提升MySQL数据库的查询性能。 首先,我们需要理解索引的基本概念。在数据库中,索引就像书的目录,它能帮助数据库系统快速定位到数据,而无需遍历...

    mysql索引优化.rar

    本资料包"mysql索引优化.rar"聚焦于MySQL的索引优化,旨在帮助你理解和掌握如何有效利用索引来提高数据库的运行效率。以下将详细介绍关于MySQL索引的知识点: 1. **索引类型** - **B-Tree索引**:最常见的索引类型...

    04-VIP-Mysql索引优化实战一.zip

    在“04-VIP-Mysql索引优化实战一”这个主题中,我们将深入探讨MySQL的索引原理、常见问题以及优化策略。 首先,了解索引的基本概念至关重要。索引是一种特殊的数据结构,用于加速数据检索。在MySQL中,B-Tree是最...

    mysql索引优化学习讲义以及示例

    【MySQL索引优化详解】 MySQL索引优化是提升数据库性能的关键环节,通过合理设计和使用索引,可以显著加快查询速度,减少数据访问的时间。在MySQL中,索引是一种特殊的数据结构,允许数据库快速找到存储在表中的...

    MYSQL索引优化.docx

    MySQL索引优化是提高数据库查询效率的关键,尤其在大数据量的场景下,合理地创建和使用索引可以显著提升查询速度。本文档主要探讨了如何选择适合的数据类型、选择合适的标识符以及对索引的基本原理和类型进行了介绍...

    mysql索引优化方案技术分享

    mysql索引的优化方案技术分享,珍贵资料收藏下

    mysql索引优化

    mysql索引优化

    VIP-mysql索引优化实战一.pdf

    ### MySQL索引优化实战知识点详解 #### 一、创建示例表 首先,我们通过一个具体的例子来了解MySQL中的索引及其优化方法。在给定的内容中,展示了一个名为`employees`的表的创建语句: ```sql CREATE TABLE `...

    VIP-mysql索引优化实战一(1)1

    本文将围绕“VIP-mysql索引优化实战一(1)1”这个主题,结合给出的示例表`employees`,讨论如何选择合适的索引以及MySQL如何决定使用哪个索引。 首先,我们来看创建的`employees`表结构,包含`id`(主键)、`name`、...

Global site tag (gtag.js) - Google Analytics