MYSQL描述:
一个文章库,里面有两个表:category和article。category里面有10条分类数据。article里面有 20万条。article里面有一个"article_category"字段是与category里的"category_id"字段相对应的。 article表里面已经把 article_category定义为了索引。数据库大小为1.3G。
问题描述:
执行一个很普通的查询: SELECT * FROM `article` WHERE article_category=11 ORDER BY article_id DESC LIMIT 5 。执行时间大约要5秒左右
解决方案:
建一个索引:create index idx_u on article (article_category,article_id);
SELECT * FROM `article` WHERE article_category=11 ORDER BY article_id DESC LIMIT 5 减少到0.0027秒
继续问题:
SELECT * FROM `article` WHERE article_category IN (2,3) ORDER BY article_id DESC LIMIT 5 执行时间要11.2850秒。
使用OR:
select * from article
where article_category=2
or article_category=3
order by article_id desc
limit 5
执行时间:11.0777
解决方案:避免使用in 或者 or (or会导致扫表),使用union all
使用UNION ALL:
(select * from article where article_category=2 order by article_id desc limit 5)
UNION ALL (select * from article where article_category=3 order by article_id desc limit 5)
ORDER BY article_id desc
limit 5
执行时间:0.0261
转:http://wasabi.iteye.com/blog/213561
分享到:
相关推荐
在MySQL数据库中,建立高效的索引对于提升查询性能至关重要。索引是一种特殊的数据结构,它可以帮助数据库快速定位和访问数据,从而加速查询速度。本文主要探讨如何根据不同的因素创建理想的索引,包括查询频繁度、...
mysql索引与视图实例附答案宣贯 在本篇文章中,我们将探讨 MySQL 中的索引和视图这两个重要概念,并通过实例和答案来宣贯相关知识点。 索引概念: 索引是一种数据结构,它可以提高查询的速度。索引可以创建在表上...
《MySQL使用实例book》是一本全面讲解MySQL数据库应用与开发的书籍,旨在帮助读者逐步掌握MySQL的实际操作技巧。通过对本书的学习,你可以深入了解MySQL在实际工作中的应用,提升数据库管理、查询优化以及数据存储的...
MySQL 索引与视图的实例附答案 MySQL 索引是创建在表上的,是对数据库表中一列或多列的值进行排序的一种结构。索引可以提高查询的速度。索引的优点是可以提高检索数据的速度,这是创建索引的最主要的原因。索引的...
2. MySQL基础:数据库创建、表结构设计、数据类型选择、SQL查询(SELECT、INSERT、UPDATE、DELETE)、索引、事务处理等。 3. PHP与MySQL连接:使用mysqli或PDO扩展来建立数据库连接,执行SQL语句,处理结果集。 4....
MySQL支持多种类型的索引,如B树索引、哈希索引和全文索引。在创建表时,合理地为常用查询字段添加索引,能显著提升数据库的响应速度。 事务处理是关系数据库的重要特性,确保了数据的一致性和完整性。MySQL支持两...
在《mysql索引优化[CU经典提问和解答过程].doc》文档中,可能会涵盖更多具体的案例和解答,帮助读者更深入地理解如何通过`EXPLAIN`分析来优化MySQL查询。通过不断实践和学习,我们可以提升数据库性能,确保系统的...
MySQL 索引与视图实例详解 MySQL 索引的概念 索引是创建在表上的,是对数据库表中一列或多列的值进行排序的一种结构。索引可以提高查询的速度。索引的优点是可以提高检索数据的速度,这是创建索引的最主要的原因...
velocity+ibatis+mysql+exlipse实例 velocity+ibatis+mysql+exlipse实例 velocity+ibatis+mysql+exlipse实例 velocity+ibatis+mysql+exlipse实例 velocity+ibatis+mysql+exlipse实例
MySQL数据库基础实例教程是针对初学者的一套系统性学习资源,尤其适合想要了解数据库管理和开发的人群。本教程分为多个章节,涵盖了从基础到进阶的各个关键领域,旨在通过实例教学来帮助学习者深入理解MySQL的核心...
### MySQL索引失效详解 #### 一、引言 在日常工作中,SQL是不可或缺的技术工具之一,但在实际操作中,不少开发人员对于SQL优化及索引的理解并不深入。特别是当数据量逐渐增大时,索引的正确使用与否直接影响着系统...
本文实例讲述了mysql索引覆盖。分享给大家供大家参考,具体如下: 索引覆盖 如果查询的列恰好是索引的一部分,那么查询只需要在索引文件上进行,不需要回行到磁盘再找数据。这种查询速度非常快,称为“索引覆盖”。 假...
本文实例讲述了mysql重复索引与冗余索引。分享给大家供大家参考,具体如下: 重复索引:表示一个列或者顺序相同的几个列上建立的多个索引。 冗余索引:两个索引所覆盖的列重叠 冗余索引在一些特殊的场景下使用到了...
本练习实例提供了这些操作的具体示例和解答,通过实践这些例子,你可以更好地理解MySQL的语法和功能,并提升数据库操作能力。在实践中遇到问题时,可以参考解答部分找到解决方案,确保每个练习都能得到充分理解和...
1. **MySQL数据库基础**:包括表结构设计、SQL语言(SELECT、INSERT、UPDATE、DELETE)、索引优化、事务处理等。 2. **JDBC连接**:虽然Ibatis降低了对JDBC的直接依赖,但了解JDBC的基本概念,如数据库连接、...
本文将深入探讨MySQL的学习实例和相关资源,帮助你更好地理解和掌握这一强大的数据库技术。 首先,让我们从基础开始。MySQL基于SQL(结构化查询语言),这是用于管理和操作数据库的标准语言。SQL的基本操作包括数据...
通过深入学习和实践MySQL官方实例库中的基本SQL实例,初学者可以逐步熟悉这些概念,从而更好地理解和运用SQL语言。这些实例将涵盖各种查询技巧、数据操作以及数据库管理等方面,帮助新手快速上手并提升技能。
在本实例分析中,我们将深入探讨MySQL索引如何影响排序速度,通过具体的操作步骤和测试来展示其效果。 首先,创建一个名为`t15`的测试表,包含`id`、`cat_id`、`price`和`name`四个字段,其中`id`是主键。接着,...