一、sql中使用正则表达式
select name,email from user where email Regexp "@163[.,]com$";
sql语句中使用Regexp对性能影响较大。
二、使用Rand()函数获取随机数据
rand();随机数函数
1、随机排序 mysql> select * from hello order by rand();
2、随机列抽取3条 mysql> select * from hello order by rand() limit 3;
三、使用group by 分组语句后面跟with rollup 关键字,可以统计出更多的信息。(with rollup后不能再使用order by)
四、外键
表B1中的一个普通的列是另一个表B2的主键,如果B2表中的一条记录删除那表B1中关联该主键值的列也应该删除。
不建议使用外键,在使用的时候要注意。
mysql中的Innodb存储引擎支持外键。
五、使用 ? % 查看帮助手册
? create 、? opti% 、? contents 、? functions
mysql优化
一、sql语句如何优化
1、查询数据库各种sql类型语句的执行情况。
show [session | global ] status :了解数据库中各种sql的执行频率
session:表示查询当前建立连接以来各种SQL的执行频率
global:表示自数据库启动以来各种SQL的执行频率
一般我们主要查询这些信息:
com_xxx :表示每个xxx语句的执行次数,该方式可以查看mysql任何存储引擎的sql语句执行次数记录。
show GLOBAL status like "com_select%"; // 查看sql 中select语句的执行次数
show GLOBAL status like "com_insert%"; // 查看sql 中insert语句的执行次数
show GLOBAL status like "com_update%"; // 查看sql 中update语句的执行次数
show GLOBAL status like "com_delete%";// 查看sql 中delete语句的执行次数
对于存储引擎为InnoDB:该方式查询的记录数是计算你每次SQL操作数据的行数。(例如:delete from hello where id <=10 该语句删除了10条记录,那么Innodb_rows_deleted=10)
mysql> show status like 'connections'; 查看mysql的连接量(无论一次连接是否成功)
mysql> show status like 'uptime'; 查看mysql工作时间 单位秒
2、关于mysql慢查询
a、查看mysql慢查询状态
slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。
log_slow_queries :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
slow_query_log_file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
b、慢查询时间(秒):会将select 语句执行时间超过10秒的sql记录到慢查询日志中
3、定位分析sql语句(desc 与 explain 方式任选其一)