今天在网站论坛上看到了一篇mysql的索引使用不当速度比没加索引还慢。整个看完后,觉得还是非常不错的。于是转载此文章,地址:
http://www.iteye.com/topic/1082602
示例:
下面是我们插入到这个tuangou表的数据:
id web city type
1 拉手网 北京 餐饮美食
2 拉手网 上海 休闲娱乐
3 百分团 天津 餐饮美食
4 拉手网 深圳 网上购物
5 百分团 石家庄 优惠卷票
6 百分团 邯郸 美容保健
..
4999 百分团 重庆 旅游酒店
5000 拉手网 西安 优惠卷票
执行mysql语句:
$sql = "select from tuangou where web='拉手网' and city='上海'";
(1)如果没有加索引,执行时间是:0.0041秒
(2)如果只给web加索引,执行时间:0.0064秒
(3)如果web和city都加上索引,执行时间:0.0007 秒
结果:第(2)中虽然加上索引,但查询时间比不加索引用的时间还多。所以我建议大家,需要经常查询的字段都加上索引。
总结:
(1)web字段的可选择性非常差,使用索引比全表还慢。因为要先跑一遍索引。然后根据没消除几个记录的索引再跑差不多半个全表,结果还不如直接全表。这里添加(web,city)复合索引比较合适。
(2)每增加一个索引,都会对INSERT、UPDATE、DELETE的效率产生影响,所以并不是越多越好。
(3)索引采用B* tree存储。insert、update、delete在B* tree添加节点需要调整B* tree的结构,故会很慢,添加适当。另外对于查询,最好的索引就是唯一性,一次即可定位,对于重复数据很多的列不合适简建立索引,因为过滤后数据量仍然很大,先走索引在走表,故很慢。
分享到:
相关推荐
然而,正如题目所描述的情况,索引的使用如果不当,反而可能导致查询效率降低,甚至比没有索引时更慢。下面我们将详细讨论这个问题,并通过例子来阐述。 首先,让我们分析给定的例子。在这个名为`tuangou`的表中,...
### MySQL索引最佳实践 #### 理解索引的重要性 在数据库管理中,索引是一种数据结构,用于提高查询速度。它对于开发者和数据库管理员(DBA)来说至关重要。索引选择不当可能会导致生产环境中的诸多问题。尽管索引...
- **修改索引**: MySQL不直接支持修改索引,需先删除再重建。 - **查询索引** - **基础命令**: `EXPLAIN SELECT * FROM table_name WHERE condition;` - **参数解释**: - **id**: 指示查询的执行顺序。 - **...
MySQL数据库在实际应用中,性能优化是至关...综上所述,优化MySQL索引的关键在于理解业务需求,结合查询模式和数据分布特性,合理设计和调整索引。通过这些方法,可以显著提升数据库的查询效率,为系统性能保驾护航。
2. **分析慢查询**:使用工具分析慢查询日志,找出耗时较长的查询。 3. **优化SQL语句**:根据分析结果调整SQL语句结构。 4. **调整索引**:根据需要创建或调整现有索引,提高查询效率。 5. **监控效果**:持续监控...
### MySQL的基本介绍及优化...综上所述,MySQL的优化不仅涉及到具体的SQL语句编写,还需要关注整体架构设计、存储引擎选择、索引策略等多个方面。通过综合运用各种优化手段,可以显著提升系统的响应速度和处理能力。
### MySQL索引及性能优化知识点解析 #### 一、MySQL性能下降的表现与原因 1. **性能下降的表现**: - 执行时间显著延长。 - 用户操作等待时间增加。 - 查询响应时间不稳定。 2. **性能下降的原因**: - **...
在本案例实战中,我们将深入探讨陌生人社交APP的MySQL索引设计,这对于我们理解如何优化数据库性能至关重要。MySQL是广泛应用于互联网行业的关系型数据库管理系统,尤其在处理大规模用户交互的数据时,良好的索引...
索引是提升查询速度的重要手段,但不当的索引会增加维护成本和存储开销。 1. **合适地创建索引**:分析查询语句,确定经常用于WHERE子句的列,为其创建索引。主键和外键自动创建索引,但非主键列的索引需谨慎考虑。 ...
MySQL数据库在日常使用中会遇到各种问题,其中索引优化是提升数据库性能的关键环节。本文将探讨MySQL的一些常见问题,特别是与索引相关的优化策略。 1. 关于MySQL `count(distinct)` 的逻辑bug 在执行`count...
5. **索引分析**:指出可能缺少索引或索引使用不当的查询。 根据这些信息,你可以采取以下优化措施: 1. **改进查询语句**:针对执行时间长的查询进行优化,可能需要重新设计查询结构,减少JOIN操作,或者使用更...
MySQL数据库在数据处理中起着至关重要的作用,其性能很大程度上取决于索引的高效使用。然而,有时我们可能会遇到索引失效的情况,这可能导致查询性能急剧下降。本篇将详细探讨10种可能导致MySQL数据库索引失效的常见...
然而,过度使用或不当使用索引可能会导致插入、更新和删除操作变慢,因为每次这些操作都需要维护索引。 首先,我们来看看几种常见的MySQL索引类型: 1. **主键索引**:每个表只能有一个主键索引,它确保了字段的...
MySQL索引是数据库管理系统优化查询性能的关键工具,但有时我们可能会发现即使创建了索引,查询仍然很慢。本文将深入探讨导致MySQL索引失效的一些常见情况,并提供相应的解决策略。 1. **OR条件的使用**:在查询...
脚本会分析查询日志,找出无索引或索引使用不当的查询,并推荐创建合适的索引。 3. **查询优化**:脚本可能会发现执行慢的SQL语句,并提供改进建议,如避免全表扫描、减少子查询等。 4. **内存管理**:MySQL在内存...
通过分析输出结果中的不同列(如`type`、`possible_keys`、`key`等),我们可以识别出索引缺失或使用不当等问题,并据此采取相应的优化措施。 #### 五、优化策略 根据上述步骤中收集到的信息,可以采取多种策略来...
### MySQL索引性能优化 索引性能优化对于提高数据库查询效率至关重要。文档中提到了几个关键点: - **性能下降的原因**:查询执行时间过长、等待时间长通常是由于查询语句编写不当或者索引设计不合理导致的。 - **...