mysql 工具箱_mysql 工具箱

创建测试数据 存储过程:

delimiter //

create procedure sp_generate_data()

beginset @i := 1;while @i<=500000 do

set @created_time := date_add('2017-01-01',interval @i second);set @modified_time :=@created_time;set @item_name := concat('a',@i);

insert into t_source

values (@i,@created_time,@modified_time,@item_name,'other');set @i:=@i+1;

endwhile;

commit;set @last_insert_id := 500000;

insert into t_sourceselect item_id +@last_insert_id,

created_time,

date_add(modified_time,interval @last_insert_id second),

item_name,'other'

fromt_source;

end//

delimiter ;

call sp_generate_data();

创建一个相同结构的表:

create table t_target like t_source;

将100万条数据中50万重复数据去重,插入新的表中;

set @a:='0000-00-00 00:00:00'; -- 设置变量set @b:=' ';

truncate t_target; -- 清空表

insert into t_targetselect * fromt_source force index (idx_sort)where (@a!=created_time or @b!=item_name) and (@a:=created_time) is not null and (@b:=item_name) is not nullorder by created_time,item_name;

commit;

分析查询语句:explain + 语句;

dd71c51e4157fd9d405d5973fe009c6d.png

分析结果解释:

(1)最内层的查询扫描t_source表的100万行,并使用文件排序,生成导出表derived3。

(2)第二层查询要扫描derived3的100万行,生成导出表derived2,完成变量的比较和赋值,并自动创建一个导出列f上的索引auto_key0。

(3)最外层使用auto_key0索引扫描derived2得到去重的结果行。

分析数据库表结构,并给出建议,表中数据量越大建议越明确;

select column from table_name procedure analyse();

PROCEDURE ANALYSE 通过分析select查询结果对现有的表的每一列给出优化的建议。

PROCEDURE ANALYSE的语法如下:

SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])

max_elements (默认值256) analyze查找每一列不同值时所需关注的最大不同值的数量.

analyze还用这个值来检查优化的数据类型是否该是ENUM,如果该列的不同值的数量超过了

max_elements值ENUM就不做为建议优化的数据类型。

max_memory (默认值8192) analyze查找每一列所有不同值时可能分配的最大的内存数量

一定要注意,这些只是建议,只有当你的表里的数据越来越多时,这些建议才会变得准确。

复制表:

2、只复制表结构到新表

CREATE TABLE 新表SELECT* FROM 旧表WHERE 1=2或CREATE TABLE 新表LIKE 旧表3、复制旧表的数据到新表(假设两个表结构一样)

INSERT INTO 新表SELECT*FROM 旧表4、复制旧表的数据到新表(假设两个表结构不一样)

INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表5、可以将表1结构复制到表2

SELECT* INTO 表2 FROM 表1 WHERE 1=2

6、可以将表1内容全部复制到表2

SELECT*INTO 表2 FROM 表17、 show create table 旧表;

这样会将旧表的创建命令列出。我们只需要将该命令拷贝出来,更改table的名字,就可以建立一个完全一样的表

本文同步分享在 博客“Mrning”(CNBlog)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

使用说明: ===================================================================================================== 命令行自动安装脚本: mysql_install.bat的简单用法 确定一个完整的版本号,比如:5.6.14, 5.1.72, 5.5.34, 如何确定, 访问网址: http://download.softagency.net/MySQL/Downloads/MySQL-/ (主版本号为5.1, 5.6, 5.5之类) 找到win32.zip, 或者winx64.zip结尾的文件名,比如:mysql-5.5.34-win32.zip, 中间的串:5.5.34就是 完整的版本号. 选定是32位的, 还是64位的,32位用win32, 64位的用winx64, 默认为32位。 命令行用法: mysql_install.bat [arch] [ROOTDIR] [server_port] 参数: fullversion, 必须指定, 如5.6.14, 5.1.72, 4.1.22, 5.5.34, 6.0.11-alpha等等 arch, 可选,不指定时,为win32, 有效值可以是win32或者winx64 ROOTDIR, 可选,安装的最终根目录,默认值为d:, 不用带后边的"\".此目录必须事先存在或创建好 server_port, 可选,默认值为3306. 最终生成的服务名为: iihero- 如果你想卸载,也非常简单,先用sc delete iihero- 接着进到%ROOTDIR%\%MYSQL_HOME%, 直接删除整个目录就可以了. 非常方便。 也请尊重个人劳动。 http://blog.csdn.net/iihero/article/details/5596401 有相关的描述。 有什么问题,欢迎联系:iiihero AT hotmail.com http://blog.csdn.net/iihero http://blog.chinaunix.net/uid/40286.html http://blog.chinaunix.net/topic/hexiong/ ===================================================================================================== 示例: :: mysql_install.bat 4.1.22 :: mysql_install.bat 5.0.95 winx64 :: mysql_install.bat 5.6.14 winx64 :: mysql_install.bat 5.1.72 winx64 :: mysql_install.bat 5.5.34 winx64 :: mysql_install.bat 6.0.11-alpha win32
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值