`
xxtianxiaxing
  • 浏览: 705359 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

Mysql Select Optimization

阅读更多
SELECT count(*) FROM tablename
即使对于千万级别的数据mysql也能非常迅速的返回结果
而对于
SELECT count(*) FROM tablename WHERE…..
mysql的查询时间开始攀升

现当没有WHERE语句对于整个mysql的表进行count运算的时候
MyISAM类型的表中保存有总的行数,而当添加有WHERE限定语句的时候Mysql需要对整个表进行检索,从而得出count的数值


mysql的DISTINCT的关键字有很多你想不到的用处

1.在count 不重复的记录的时候能用到
比如SELECT COUNT( DISTINCT id ) FROM tablename;
就是计算talbebname表中id不同的记录有多少条

2,在需要返回记录不同的id的具体值的时候可以用
比如SELECT DISTINCT id FROM tablename;
返回talbebname表中不同的id的具体的值

3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义
比如SELECT DISTINCT id, type FROM tablename;
实际上返回的是 id与type同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得id与tyoe都相同的才被排除了,与我们期望的结果不一样

4.这时候可以考虑使用group_concat函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的

5.其实还有另外一种解决方式,就是使用
SELECT id, type, count(DISTINCT id) FROM tablename
虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据)
返回的结果是 只有id不同的所有结果和上面的4类型可以互补使用,就是看你需要什么样的数据了



分享到:
评论

相关推荐

    Beginning MySQL Database Design and Optimization.pdf

    本书《Beginning MySQL Database Design and Optimization: From Novice to Professional》由Jon Stephens和Chad Russell合著,旨在为初学者提供一套全面且实用的MySQL学习指南。 #### 二、数据库设计基础 1. **...

    Beginning_MySQL_Database_Design__Optimization

    《 Beginning MySQL Database Design & Optimization 》是一本专为初学者设计的MySQL数据库设计与优化指南。这本书涵盖了数据库设计的基础知识,以及如何通过有效的方法来提升MySQL数据库的性能。结合书中的"Looking...

    【DISTINCT】优化之MySQL官方文档翻译

    因此,对于`DISTINCT`查询的更多优化细节,可以参考[MySQL官方文档](http://dev.mysql.com/doc/refman/5.6/en/group-by-optimization.html)中关于`GROUP BY`优化的部分。 #### 四、DISTINCT与LIMIT的结合使用 当`...

    麦子学院Mysql教程

    - **QUERY OPTIMIZATION**:优化查询语句以减少资源消耗。 - **CONFIGURATION TUNING**:调整MySQL配置参数以适应不同应用场景。 - **HARDWARE SCALING**:增加硬件资源如内存、CPU数量来提升系统性能。 以上内容为...

    【EXPLAIN】“type”字段详解之MySQL官方文档翻译

    - **应用**: 详情请参考 MySQL 文档中的 “Index Merge Optimization”。 **8. unique_subquery** - **定义**: 替代 `eq_ref` 的 IN 子查询方式。 - **特点**: 适用于单一表的 PRIMARY KEY 查询。 - **应用**: ...

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

    在`join_optimization`阶段,MySQL会处理查询条件并决定最佳的执行计划。 在`condition_processing`步骤中,MySQL分析WHERE子句中的条件,评估不同索引的适用性。如果`optimizer_trace`显示MySQL选择了全表扫描而...

    MySQL 5.6 Reference Manual

    Table of Contents Preface, Notes, Licenses . . . . . . . . ....1. Licenses for Third-Party Components ....1.1. FindGTest.cmake License ....1.2. LPeg Library License ....1.3. LuaFileSystem Library License ....

    oracle官方mysql性能调优优化文档

    #### 二、成本基础查询优化(Cost-Based Query Optimization) ##### 1. 概念解释 成本基础查询优化是MySQL中一种重要的优化技术,它通过评估不同执行计划的成本来选择最佳方案。这里提到的成本通常包括磁盘I/O操作...

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

    通过上述命令可以查看到执行计划和优化步骤的信息,其中包含了查询的准备阶段(`join_preparation`)和优化阶段(`join_optimization`)等详细信息。 #### 五、总结 通过对以上知识点的学习,我们不仅了解了MySQL中...

    基于ssm+mysql的编程类在线答题系统源码数据库论文.docx

    3. Randomized question selection: To prevent cheating, the system can randomly select questions from a pool for each student. 4. Real-time monitoring: The system could monitor user activities during ...

    PHP优化之批量操作MySQL实例分析

    首先,我们创建了一个名为`optimization`的数据表,包含一个自增主键`id`和一个字符串字段`value`。接下来,我们有两个不同的PHP代码段来实现批量插入数据到这个表中。 第一个代码段采用逐条插入的方式,即在循环中...

    索引器:Laravel软件包,用于监视SELECT查询并提供最佳的INDEX字段

    Laravel Indexer监视页面上运行的SELECT查询,并允许将数据库索引动态添加到SELECT查询中。 然后在页面上直接显示EXPLAIN或MySQL执行计划的结果。 Indexer提供的结果将帮助您查看哪些索引最适合页面上运行的不同...

    102 透彻研究通过explain命令得到的SQL执行计划(3).pdf

    通过这两个例子,我们可以了解到即使在有索引的情况下,数据库优化器可能因为成本分析(Cost-Based Optimization, CBO)决定不使用索引,而是选择全表扫描,尤其是当查询条件涉及到的值非常分散或者没有被索引覆盖时...

    PHP桂林旅游网.rar

    数据库设计包括ER图、范式理论的应用,以及SQL语句的编写,如INSERT、SELECT、UPDATE和DELETE操作。 3. MVC模式:Model-View-Controller(模型-视图-控制器)架构模式在项目中得到体现,它分离了业务逻辑、数据处理...

    PHPWind论坛 爱在天涯

    2. **MySQL数据库操作**:论坛的数据存储主要依赖MySQL,需要了解如何创建数据库、表结构,以及SQL查询语句,如SELECT、INSERT、UPDATE、DELETE等,用于论坛内容的增删改查。 3. **Web服务器配置**:PHPWind论坛...

    毕业设计 计算机专业-PHP新闻网站系统

    学生需要掌握SQL语句,如SELECT、INSERT、UPDATE、DELETE,用于数据查询、插入、修改和删除。此外,还需要了解数据库设计,如表结构、索引、关系模型等。 **MVC(Model-View-Controller)架构模式** MVC模式是Web...

    php操作数据库的adodb类库

    ADODB(Active Record Design Optimization Database Abstraction Layer)是 PHP 中一个广泛使用的数据库抽象层,它提供了一个统一的接口来操作多种不同的数据库系统,如 MySQL、PostgreSQL、Oracle 等。通过 ADODB...

    PHP连接多种数据库的adodb软件包,

    ADODB(Active Record Design Optimization Database Abstraction Layer)是PHP中一个广泛使用的数据库抽象层,它提供了一个统一的API(应用程序编程接口),允许开发者轻松地在不同的数据库系统之间切换,如MySQL、...

Global site tag (gtag.js) - Google Analytics