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

高性能MySQL学习笔记(二)

 前缀索引
(1)如果以多个字段作为索引(a,b,c)作为一个key,在查询时分根据匹配情况是否使用索引,所以,a/ a,b/ a,b,c这样的查询都能使用到,但是b,a/a,c/c,a等不符知前缀匹配就不能使用,所以在写sql时需要注意
(2)对于很长的字符串需要生成key时,可以找出最常使用的字符串的最常见前缀(前N个字条作为key,而不是将全个字符串作为key),这样一方面牺牲少少的精确性(有多余数据,再过滤),另一方面大大提高了检索效率,同时减少了索引的维护开销(存储空间,更新等)
如有200w的url,统计结果如下:
select count(*) as cnt, url from iUrl group by url order by cnt desc limit 10;
+-----+-------------------+
| cnt | url               |
+-----+-------------------+
| 380 | http://www.f.com, |
| 354 | http://www.r.com, |
| 340 | http://www.h.com, |
| 336 | http://www.u.com, |
| 336 | http://www.e.com, |
| 336 | http://www.i.com, |
| 332 | http://www.k.com, |
| 330 | http://www.t.com, |
| 330 | http://www.w.com, |
| 326 | http://www.l.com, |
+-----+-------------------+
10 rows in set (3.04 sec)
取前N个字符作为前缀,使得匹配效果与全统计接近为止(这里由于都是以http://www. 开头,所以看不出效果)
select count(*) as cnt, left(url,11) from iUrl group by url order by cnt desc limit 10;  --left(url,11) 取字符串的左N个
也可以通过计算全列选择性,详细方法要细看书了
添加前缀索引
alter table iUrl add key ( url(11) );
前缀索引好处是:1.减少索引大小 2.提高速度,但也有不足:不能用于order by/group by, 不能作为覆盖索引
聚集索引
不是一种单独的索引,而是一种存储方式。InnoDB支持,保存了B-Tree和数据行,它将数据行保存在索引的叶子页中。每个表只有一个聚集索引。InnoDB按主键进行聚集。
聚集索引优点:
1.可能把相关数据保存在一起
2.数据访问快
3.结全覆盖索引查询可以使用包含叶子节点中的主键值
缺点:
1.聚集能最大限度提升I/O密集负载的性能,但如果数据能装入内存,顺序就无所谓了,这样聚集就没有什么用处了
2.插入速度严重依赖于插入顺序(按主键顺序插入是最快的)
3.更新聚集索引开销大
4.插入、更新时可能会发生分页,导致更多的磁盘空间
5.


相关文档:

DedeCMS部署 怎样去部署Apache+Mysql+PHP(LAMP)?

 声明:部署DedeCMS,在网上搜了很多资料,包括这个论坛,几乎没有发现在linux下部署的现成资料可以参考。
             遂,自己把整个部署过程中一些重要的点记录下来,一是算做自己的劳动成果,同时,期望对曾经和我一样迷茫,不知如何部署           ......

mysql存储过程 例子 游标cursor 循环嵌套 事物

昨天要mysql中写存储过程发现网上有关于cursor循环且套的资料很少,现发出本人写的例子,希望能对大家有帮助.
看招:
DELIMITER $$
USE `ad_db`$$
DROP PROCEDURE IF EXISTS `test`$$
CREATE DEFINER=`root`@`%` PROCEDURE `test`()
BEGIN
     /** CPA效果数 */
DECLARE _tmpId1 INT; 
DECLARE ......

MySQL常用的导入导出命令

常用的:
导出
mysqldump -hyour_host -uyour_username -pyour_password database_name > file.sql
导入
mysql -hyour_host -uyour_username -pyour_password database_name < file.sql
或者先用mysql客户端登陆后,
>\. file.sql
也可以完成导入功能
上面的两个命令结合起来用,可以完成将一个数据库的 ......

MySQL数据库日志

MySQL数据库日志
select日志
slow select日志
变更日志
二进制变更日志(binlog)
告警日志
错误日志。
可以在my.cnf中配置
参数
说明
log
文本select日志,记下所有的MySQL的命令操作,
log-update
文本变更日志
log-bin
这个都知道了,数据库复制的时候必备
binlog_cache_size
临时存放某次事务的SQL ......

优化MySQL数据库查询

优化MySQL数据库查询
 
   在优化查询中,数据库应用(如MySQL)即意味着对工具的操作与使用。使用索引、使用EXPLAIN分析查询以及调整MySQL的内部配置可达到优化查询的目的
  任何一位数据库程序员都会有这样的体会:高通信量的数据库驱动程序中,一条糟糕的SQL查询语句可对整个应用程序的运行产生严重的 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号