易截截图软件、单文件、免安装、纯绿色、仅160KB

Mysql中count(*),DISTINCT的使用方法和效率研究

在处理一个大数据量数据库的时候
突然发现mysql对于count(*)的不同处理会造成不同的结果
比如执行
SELECT count(*) from tablename
即使对于千万级别的数据mysql也能非常迅速的返回结果
而对于
SELECT count(*) from tablename WHERE…..
mysql的查询时间开始攀升
仔细查阅累下手册,发现当没有WHERE语句对于整个mysql的表进行count运算的时候
MyISAM类型的表中保存有总的行数,而当添加有WHERE限定语句的时候Mysql需要对整个表进行检索
从而得出count的数值
突然又想起来看到的不少新兴的php程序对于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类型可以互补使用,就是看你需要什么样的数据了
PS:
越来越发现有很多细节是需要去探究的,
越来越发现自己写文字真的很杂乱,
有空研究下DISTINCT的效率


相关文档:

Mysql 关键字 保留字

Mysql 关键字-保留字
在powerdesigner设计的时候用了关键字,生成出错,很囧。。。
 
 
 
 
 
ADD
ALL
ALTER
ANALYZE
AND
AS
ASC
ASENSITIVE
BEFORE
BETWEEN
BIGINT
BINARY
BLOB
BOTH
BY
CALL
CASCADE
CASE
CHANGE
CHAR
CHARACTER
CHECK
COLLATE
COLUMN
CON ......

mysql 命令使用

mysql 命令学习:
1. mysql -uroot  ;
2.mysql -h ip -ubusiusr -pbusiusr newdrmdb;
3.show databases ;                 //显示所有的数据库 ;
4.show tables ;           ......

linux下 mysql用户的管理

linux
下 mysql
用户的管理
文章分类:数据库
关键字: linux
mysql
用户管理

自从上在redhat Enterprise 5 中安装了MySQL
,这次来实践操作一下MySQL
用户的管理;
 一、root用户密码的维护:
       由于安装MySQL
完后,MySQL
会自动提供一个不带 ......

使用 MySQL Workbench 可视化的设计 MySQL 数据库

英文原文:
http://www.packtpub.com/article/visual-mysql-database-design-in-mysql-workbench
下面是部分翻译过来的,转载自:http://zuolo.info/2008/11/%e4%bd%bf%e7%94%a8-mysql-workbench-%e5%8f%af%e8%a7%86%e5%8c%96%e7%9a%84%e8%ae%be%e8%ae%a1-mysql-%e6%95%b0%e6%8d%ae%e5%ba%93-1%e8%af%91%e6%96%87/
MySQL ......

小题大做之MySQL 5.0存储过程编程入门

MySQL 版本:5.0.45    phpMyAdmin版本:2.11.3
 
首先看MySQL 5.0参考手册中关于创建存储过程的语法说明:
 
CREATE
    [DEFINER = { user | CURRENT_USER }]
    PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] r ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号