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

[MySQL优化] 如何查找SQL效率地下的原因


[MySQL优化] -- 如何查找SQL效率地下的原因
时间:2010-2-28来源:HaCMS开源社区 作者:chusong
查询到效率低的 SQL 语句 后,可以通过 EXPLAIN 或者 DESC 命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序,比如我们想计算 2006 年所有公司的销售额,需要关联 sales 表和 company 表,并且对 profit 字段做求和( s ...
查询到效率低的 SQL 语句 后,可以通过 EXPLAIN 或者 DESC 命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序,比如我们想计算 2006 年所有公司的销售额,需要关联 sales 表和 company 表,并且对 profit 字段做求和( sum )操作,相应 SQL 的执行计划如下: 
mysql> explain select sum(profit) from sales a,company b where a.company_id = b.id and a.year = 2006\G; 
*************************** 1. row *************************** 
id: 1 
select_type: SIMPLE 
table: a 
type: ALL 
possible_keys: NULL 
key: NULL 
key_len: NULL 
ref: NULL 
rows: 12 
Extra: Using where 
*************************** 2. row *************************** 
id: 1 
select_type: SIMPLE 
table: b 
type: ALL 
possible_keys: NULL 
key: NULL 
key_len: NULL 
ref: NULL 
rows: 12 
Extra: Using where 
2 rows in set (0.00 sec) 
每个列的解释如下: 
Extra :执行情况的说明和描述。
在上面的例子中,已经可以确认是 对 a 表的全表扫描导致效率的不理想,那么 对 a 表的 year 字段创建索引,具体如下: 
mysql> create index idx_sales_year on sales(year); 
Query OK, 12 rows affected (0.01 sec) 
Records: 12 Duplicates: 0 Warnings: 0
创建索引后,这条语句的执行计划如下: 
mysql> explain select sum(profit) from sales a,company b where a.company_id = b.id and a.year = 2006\G; 
*************************** 1. row *************************** 
id: 1 
select_type: SIMPLE 
table: a 
type: ref 
possible_keys: idx_sales_year 
key: idx_sales_


相关文档:

SQL Server BI Step by Step SSIS 1 准备

SQL Server 2005 和2008提供了很多新的和增强的商务智能功能,包括利用集成服务(SSIS)整合多种数据源;利用分析服务(SSAS)使数据内容更丰富并且建立复杂的商业分析; 以及利用报表服务(SSRS)编辑,管理,和提交丰富的报表. 如果你现在还不清楚这些功能,那么接下来一系列的介绍会让你对SQL Server现在的商务智能支持大吃一惊.不过 ......

mysql中的insert时注意自增长字段的写法

比如:
insert into User values(x1,x2,x3,x4),(x1,x2,x3,x4),(x1,x2,x3,x4)
这种写法,列数量必须和表中所有列保持一致,也就是说列都要列出来。
这个user表里面的一个字段x1是个自增长字段,则应该填null占位
insert into User values(null,x2,x3,x4),(null,x2,x3,x4),(null,x2,x3,x4)
否则会报错。 ......

Geoserver+MYSQL数据配置,openlayer预览图层异常

最近折腾GeoServer与Mysql的连接,试了不少时间,出现了几个问题
   1 发布的基于mysql数据库Layer,在预览时失败
   相关版本如下:
  Gerserver 2.0.1
  Mysql 5.5.1
  mysql-connector-java-5.1.5.jar
  gt-mysql-2.6.0.jar
  后尝试替换Mysql数据库版本为5.0 ......

MySQL集群

1,将6.0版本的mysql集群软件上传到Linux或是Solaris上,解压
 
 1>,为了方便调用将其改名为mysql,并且放于/usr/local/下
 2>,创建连接文件,进入/usr/local/下
  
  ln -s ..../mysql mysql
2,创建组,添加用户
 
 groupadd mysql
 useradd -g mysq ......

SQL 循环

declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
---------------
while 条件
begin
执行操作
set @i=@i+1
end
WHILE
设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用 BREAK 和 CONTINUE 关键字在循环内部控制 W ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号