MySQL 使用经验合辑

一. MySQL Dump:

命令行下具体用法如下:  mysqldump -u用戶名 -p密码 -d 數據库名 表名 脚本名;

1、导出數據库為dbname的表结构(其中用戶名為root,密码為dbpasswd,生成的脚本名為db.sql)

mysqldump -uroot -pdbpasswd -d dbname >db.sql;

2、导出數據库為dbname某张表(test)结构

mysqldump -uroot -pdbpasswd -d dbname test>db.sql;

3、导出數據库為dbname所有表结构及表數據(不加-d)

mysqldump -uroot -pdbpasswd  dbname >db.sql;

4、导出數據库為dbname某张表(test)结构及表數據(不加-d)

mysqldump -uroot -pdbpasswd dbname test>db.sql;

EG: 

mysqldump  -h XXXX.XXX.XXX.XX -uUSERNAME_XXXX -pPASSWORD_XXX DBNAME TABLENAME>file.sql;

 

二. MySQL查询随机一行数据:

SELECT AAA.ID, AAA.Name, AAA.Age 
FROM MySqlTable AS AAA JOIN ( 
     SELECT ROUND(RAND() * 
            ((SELECT MAX(ID) FROM MySqlTable)-(SELECT MIN(ID) FROM MySqlTable))+ 
            (SELECT MIN(ID) FROM MySqlTable) 
     ) AS RandomID) AS BBB 
WHERE AAA.ID >= BBB.RandomID 
ORDER BY AAA.ID LIMIT 1; 

 在7W的数据量下,  查询平均花费 0.0014 秒(已测)

 

三. MySQL 查询缓存:select @@query_cache_type;

1. 要么打开缓存;

2. 要么关闭缓存;

3. 要么使用SQL的显示缓存 select SQL_CACHE user_name from users where user_id = '100';

http://blog.sina.com.cn/s/blog_75ad10100101by7j.html

 

四. MySQ Lleft(right)join筛选条件在on and与where差异:

http://xianglp.iteye.com/blog/868957

 

五. MySQL计算集合之间的差集和交集;

普通做法就是IN; 但是大数据下太慢; 所以1, 2:

1. 差集;

SELECT ID FROM (
SELECT DISTINCT A.AID AS ID FROM TABLE_A A
UNION ALL
SELECT DISTINCT B.BID AS ID FROM TABLE_B B
)TEMP GROUP BY ID HAVING COUNT(ID) = 1

 2. 交集;

SELECT ID FROM (
SELECT DISTINCT A.AID AS ID FROM TABLE_A A
UNION ALL
SELECT DISTINCT B.BID AS ID FROM TABLE_B B
)TEMP GROUP BY ID HAVING COUNT(ID) = 2

 3. .... LEFT JOIN解决问题:

http://www.cnblogs.com/cy163/archive/2008/11/03/1325400.html

 

六. MySQL死锁解决:

JAVA异常:

2014-02-11 12:20:29,947 - SYS [http-bio-52000-exec-9] ERROR  Log4jUtil.exception(Log4jUtil.java:47) 

- PreparedStatementCallback; SQL []; Deadlock found when trying to get lock; 

try restarting transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock;  try restarting transaction

mysql> show processlist ;

mysql> kill mysqlprocessid;

原因: 数据批量更新时,执行一个Update语句时, 使用了一个耗时较大的SQL, SQL中用了IN, IN中的数据大约是2000条;

 

七. mysql group by order by

select * from test group by category_id order by `date`
 
select * from (select * from `test` order by `date` desc) `temp`  group by category_id order by `date` desc
第一个SQL,是基于 category_id分组后, 取分组的数据为顺序排列的第一条数据.  最后在根据每个组的数据基于date排序;
第二个SQL, 是取category_id分组中date最大的值的行, 最后再根据每个组基于date排序
 
八. 循环插入表数据
#创建测试的test表
DROP TABLE IF EXISTS test; 
CREATE TABLE test( 
    ID INT(10) NOT NULL, 
    `Name` VARCHAR(20) DEFAULT '' NOT NULL, 
    PRIMARY KEY( ID ) 
)ENGINE=INNODB DEFAULT CHARSET utf8; 

#创建生成测试数据的存储过程
DROP PROCEDURE IF EXISTS pre_test; 
DELIMITER //
CREATE PROCEDURE pre_test() 
BEGIN 
DECLARE i INT DEFAULT 0; 
SET autocommit = 0; 
WHILE i<10000000 DO 
INSERT INTO test ( ID,`Name` ) VALUES( i, CONCAT( 'Carl', i ) ); 
SET i = i+1; 
IF i%2000 = 0 THEN 
COMMIT; 
END IF; 
END WHILE; 
END; //
DELIMITER ;

#执行存储过程生成测试数据
CALL pre_test();
 
九. 查询排名:
/*表结构*/
CREATE TABLE  `t1` (                   
          `xingming` char(10) default NULL,   
          `chengji` decimal(6,2) default NULL,
           `mingci` int(3) NOT NULL,            
          KEY `t1` (xingming,chengji)            
        ) ;
/*数据*/
insert into t1 (xingming,chengji)
      values
      ('张一',50),
      ('张二',80),
      ('张三',70),
      ('张四',20),
      ('张五',90),
      ('张六',90),
      ('张七',70);
/*思路
排名是这样的
先按分数排序
如果分数一样,则并列第几名
分数不一样,则是他的顺序号
用三个变量实现
@chengji  保存成绩
@mingci 保存名次
@shunxu 保存顺序
*/
set @chengji=0;
set @mingci=1;
set @shunxu=0;
/*sql语句*/
update t1,
(select xingming,chengji,
@shunxu:=@shunxu+1,
if(chengji=@chengji,@mingci,@mingci:=@shunxu) as mingci,
@chengji:=chengji
from t1 order by chengji desc) as t2
set t1.mingci=t2.mingci
WHERE t1.xingming=t2.xingming and t1.chengji=t2.chengji;


select xingming,chengji,mingci from t1 order by mingci desc;
/*查询结果
"张四"	"20.00"	"7"
"张一"	"50.00"	"6"
"张三"	"70.00"	"4"
"张七"	"70.00"	"4"
"张二"	"80.00"	"3"
"张五"	"90.00"	"1"
"张六"	"90.00"	"1"
*/
 同理, 给每行数据返回中添加自增的ID的SQL;
SET    @VAR_Rank=0;
SELECT AA.DataColumn,
       @VAR_Rank:=@VAR_Rank+1 AS ID
FROM   TABLE_XXXXX AA
where  AA.DataColumn>1000
ORDER  BY AA.DataColumn ASC
LIMIT  100
 http://bbs.youkuaiyun.com/topics/250014224
   十. 数据库表数据备份:
#!/bin/bash

da=`date '+%Y%m%d'`
#echo "$da"
mysqldump -udbusername -ppasswd110 -h127.0.0.1 dbname tablename > /data/tablename/tablename_$da.sql
 
源码来自:https://pan.quark.cn/s/a3a3fbe70177 AppBrowser(Application属性查看器,不需要越狱! ! ! ) 不需要越狱,调用私有方法 --- 获取完整的已安装应用列表、打开和删除应用操作、应用运行时相关信息的查看。 支持iOS10.X 注意 目前AppBrowser不支持iOS11应用查看, 由于iOS11目前还处在Beta版, 系统API还没有稳定下来。 等到Private Header更新了iOS11版本,我也会进行更新。 功能 [x] 已安装的应用列表 [x] 应用的详情界面 (打开应用,删除应用,应用的相关信息展示) [x] 应用运行时信息展示(LSApplicationProxy) [ ] 定制喜欢的字段,展示在应用详情界面 介绍 所有已安装应用列表(应用icon+应用名) 为了提供思路,这里只用伪代码,具体的私有代码调用请查看: 获取应用实例: 获取应用名和应用的icon: 应用列表界面展示: 应用列表 应用运行时详情 打开应用: 卸载应用: 获取info.plist文件: 应用运行时详情界面展示: 应用运行时详情 右上角,从左往右第一个按钮用来打开应用;第二个按钮用来卸载这个应用 INFO按钮用来解析并显示出对应的LSApplicationProxy类 树形展示LSApplicationProxy类 通过算法,将LSApplicationProxy类,转换成了字典。 转换规则是:属性名为key,属性值为value,如果value是一个可解析的类(除了NSString,NSNumber...等等)或者是个数组或字典,则继续递归解析。 并且会找到superClass的属性并解析,superClass如...
基于遗传算法辅助异构改进的动态多群粒子群优化算法(GA-HIDMSPSO)的LSTM分类预测研究(Matlab代码实现)内容概要:本文研究了一种基于遗传算法辅助异构改进的动态多群粒子群优化算法(GA-HIDMSPSO),并将其应用于LSTM神经网络的分类预测中,通过Matlab代码实现。该方法结合遗传算法的全局搜索能力与改进的多群粒子群算法的局部优化特性,提升LSTM模型在分类任务中的性能表现,尤其适用于复杂非线性系统的预测问题。文中详细阐述了算法的设计思路、优化机制及在LSTM参数优化中的具体应用,并提供了可复现的Matlab代码,属于SCI级别研究成果的复现与拓展。; 适合人群:具备一定机器学习和优化算法基础,熟悉Matlab编程,从事智能算法、时间序列预测或分类模型研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①提升LSTM在分类任务中的准确性与收敛速度;②研究混合智能优化算法(如GA与PSO结合)在神经网络超参数优化中的应用;③实现高精度分类预测模型,适用于电力系统故障诊断、电池健康状态识别等领域; 阅读建议:建议读者结合Matlab代码逐步调试运行,理解GA-HIDMSPSO算法的实现细节,重点关注种群划分、异构策略设计及与LSTM的集成方式,同时可扩展至其他深度学习模型的参数优化任务中进行对比实验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值