`

一个简单的sql优化

阅读更多

Simple optimizations

You can sometimes use MyISAM’s COUNT(*) optimization to your advantage when you

want to count all but a very small number of rows that are well indexed. The following

example uses the standard world database to show how you can efficiently find the

number of cities whose ID is greater than 5. You might write this query as follows:

mysql> SELECT COUNT(*) FROM world.City WHERE ID > 5;

If you examine this query with SHOW STATUS, you’ll see that it scans 4,079 rows. If you

negate the conditions and subtract the number of cities whose IDs are less than or equal

to 5 from the total number of cities, you can reduce that to five rows:

242 | Chapter 6: Query Performance Optimization

mysql> SELECT (SELECT COUNT(*) FROM world.City) - COUNT(*)

-> FROM world.City WHERE ID <= 5;

This version reads fewer rows because the subquery is turned into a constant during

the query optimization phase, as you can see with EXPLAIN:

+----+-------------+-------+...+------+------------------------------+

| id | select_type | table |...| rows | Extra

|

+----+-------------+-------+...+------+------------------------------+

| 1 | PRIMARY

| City |...|

6 | Using where; Using index

|

| 2 | SUBQUERY

| NULL |...| NULL | Select tables optimized away |

+----+-------------+-------+...+------+------------------------------+

A frequent question on mailing lists and IRC channels is how to retrieve counts for

several different values in the same column with just one query, to reduce the number

of queries required. For example, say you want to create a single query that counts how

many items have each of several colors. You can’t use an OR (e.g., SELECT COUNT(color

= 'blue' OR color = 'red') FROM items;), because that won’t separate the different

counts for the different colors. And you can’t put the colors in the WHERE clause (e.g.,

SELECT COUNT(*) FROM items WHERE color = 'blue' AND color = 'red';), because the

colors are mutually exclusive. Here is a query that solves this problem:16

mysql> SELECT SUM(IF(color = 'blue', 1, 0)) AS blue,SUM(IF(color = 'red', 1, 0))

-> AS red FROM items;

And here is another that’s equivalent, but instead of using SUM() uses COUNT() and en-

sures that the expressions won’t have values when the criteria are false:

mysql> SELECT COUNT(color = 'blue' OR NULL) AS blue, COUNT(color = 'red' OR NULL)

-> AS red FROM items;

 

分享到:
评论

相关推荐

    收获,不止SQL优化--(抓住SQL的本质) .pdf

    , 然而,SQL虽然实现简单可乐,却极易引发性能问题,那时广大SQL使用人员可要“愁”就一个字,心碎无数次了。, 缘何有性能问题?原因也一字概括:“量”。当系统数据量、并发访问量上去后,不良SQL就会拖跨整个系统...

    sql性能优化及实例

    减少数据访问,返回更少数据,减少交互次数,减少服务器CPU开销,利用更多资源。注意:这个是对《sql性能优化分享》的后期修改与补充。下载这个最新的就下载老的了。别下载重复了!!!

    收获,不止SQL优化

    , 然而,SQL虽然实现简单可乐,却极易引发性能问题,那时广大SQL使用人员可要“愁”就一个字,心碎无数次了。, 缘何有性能问题?原因也一字概括:“量”。当系统数据量、并发访问量上去后,不良SQL就会拖跨整个系统...

    收获,不止SQL优化 PDF 带书签 第三部分

    然而,SQL虽然实现简单可乐,却极易引发性能问题,那时广大SQL使用人员可要“愁”就一个字,心碎无数次了。 缘何有性能问题?原因也一字概括:“量”。当系统数据量、并发访问量上去后,不良SQL就会拖跨整个系统,...

    高性能SQL优化

    高性能SQL优化,比较简单易懂

    收获,不止SQL优化--抓住SQL的本质1

    内容简介有人就有江湖,有江湖就有 IT 系统,有 IT 系统就有数据库,有数据库就有 SQL,SQL 应用可一字概恬:“广”加之其简单易学,SQL 实现也可-字

    落落 Oracle SQL优化与改写培训教程

    大量优化实战方法:将主要SQL优化点一一剖析,分享大量SQL优化的实际工作经验 50余改写调优案例:覆盖大多数DBA日常工作场景,具有相当大的实用价值 技巧+案例:可以作为DBA的参考手册,也可以作为开发人员编写SQL...

    oracle性能优化之SQL语句优化

    oracle性能优化中SQL语句优化,简单的优化思想、常见的优化命令

    JAVA-SQL语句优化.doc

    于一个系统不是简单地能实现其功能就可,而是要写出高质量的SQL语句,提高系统的可用性。 在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。但是,如果在SQL语句的where子句中写的...

    sql优化的建议

    sql大量查询优化方法的一些简单建议,对于数据库初学者有一定的帮助

    oracle的sql优化

    oracle的sql优化方法 1.全表扫描和索引扫描  大数据量表尽量要避免全表扫描,全部扫描会按顺序每条记录扫描,对于&gt;100万数据表影响很大。  Oracle中通过RowID访问数据是最快的方式  对字段进行函数转换,或者前...

    收获,不止SQL优化-抓住SQL的本质

    然而,SQL虽然实现简单可乐,却极易引发性能问题,那时广大SQL使用人员可要“愁”就一个字,心碎无数次了。 缘何有性能问题?原因也一字概括:“量”。当系统数据量、并发访问量上去后,不良SQL就会拖跨整个系统,...

    LECCO SQL Expert (智能自动SQL优化)

    图1 人工智能自动SQL优化示意图 其核心模块之一“SQL语法优化器”的工作原理大致如下(如图1): 一条源SQL语句输入→“人工智能反馈式搜索引擎”对输入的SQL语句结合检测到的数据库结构和索引进行重写,产生N条等效...

    SQL 优化原则

    对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的SQL语句,提高系统的可用性。  在多数情况下,Oracle使用索引来更快地遍...

    sql优化及存储过程简单编写

    sql优化思路,及查看sql慢查询定位慢查询sql,及sql存储过程简单编写

    从案例中学习如何快速缩短SQL优化过程.pdf

    优化SQL语句,简单易懂,可操作性强。从案例看快速SQL调优总览,实操加经验分享。你觉的应该获取SQL对应表的哪些信息?你觉的应该获取SQL对应索引的哪些信息?

    lecco sql export pro(SQL优化器)

    LECCO SQL Expert不仅能够找到最佳的SQL语句,而且提供的“边做边学式训练”还能够教会开发人员和...同以往的数据库优化手段相比较,LECCO SQL Expert的出现可以说是将数据库优化技术带到了一个崭新的技术高度。

    ORACLE SQL优化

    ORACLE database 11G SQL优化,简单描述

    SQL性能优化调整.ppt

    SQL性能优化最简单明了的说明,主要针对oracle数据库

    SQL Server 速度优化

    简单概要的介绍了一些提高SQL语句执行速度的方法,在后续的实践中如果遇到更多更好的方法在不断补充...

Global site tag (gtag.js) - Google Analytics