Mysql

来源:互联网 发布:手机qq辅助软件 编辑:程序博客网 时间:2024/06/03 04:01

Mysql

一、设置慢查询开关和时间限制

查看慢查询日志的开启状态: show variables like 'slow_query_log';开启慢查询日志:set global slow_query_log = on;查看慢查询时间:show variables like 'long_query_time';设置慢查询的时间为5秒:set global long_query_time=5;查看慢查询配置情况:show status like '%slow_queries%';

二、sql优化

三、索引优化

四、数据库表结构优化

五、

索引和主键

  1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。
    所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的作用。
    主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。
  2. 一个表中可以有多个唯一性索引,但只能有一个主键。
  3. 主键列不允许空值,而唯一性索引列允许空值。
  4. 索引可以提高查询的速度。

索引的分类

多列索引
ALTER TABLE table_name ADD INDEX index_name ( column1, column2, column3 )
1.普通索引。
这是最基本的索引,它没有任何限制。它有以下几种创建方式:
(1)创建索引:CREATE INDEX indexName ON tableName(tableColumns(length));如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB 和 TEXT 类型,必须指定length,下同。
(2)修改表结构:ALTER tableName ADD INDEX [indexName] ON (tableColumns(length))
(3)创建表的时候直接指定:CREATE TABLE tableName ( […], INDEX [indexName] (tableColumns(length)) ;
2.唯一索引。
它与前面的”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
(1)创建索引:CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))
(2)修改表结构:ALTER tableName ADD UNIQUE [indexName] ON (tableColumns(length))
(3)创建表的时候直接指定:CREATE TABLE tableName ( […], UNIQUE [indexName] (tableColumns(length));
3.主键索引
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:CREATE TABLE testIndex(i_testID INT NOT NULL AUTO_INCREMENT,vc_Name VARCHAR(16) NOT NULL,PRIMARY KEY(i_testID)); 当然也可以用ALTER命令。

Mysql常用的sql:中没有top

– SELECT * from dapmanager_hosts;

– sql 优化,尽量不要用*号
– SELECT * from dapmanager_hosts_resource_info;

– 无on的连接为笛卡尔积结果集
– SELECT * from dapmanager_hosts INNER JOIN dapmanager_hosts_resource_info; – no on JOIN.

– 内连接:自然连接
– SELECT * from dapmanager_hosts host INNER JOIN dapmanager_hosts_resource_info resource on ( host.host_ip = resource.ipAddress );
– SELECT * from dapmanager_hosts host INNER JOIN dapmanager_hosts_resource_info resource on ( host.host_ip = resource.ipAddress and hostName = ‘zdh111’); – no on JOIN.

– 左连接:只有一个连接条件的情况
– SELECT * from dapmanager_hosts host LEFT JOIN dapmanager_hosts_resource_info resource on ( host.host_ip = resource.ipAddress );
– 左连接:多个连接条件
– SELECT * from dapmanager_hosts host LEFT JOIN dapmanager_hosts_resource_info resource on ( host.host_ip = resource.ipAddress and hostName = ‘zdh111’);

– 排序:单个字段或者多个字段联合排序
– SELECT * from dapmanager_hosts_resource_info ORDER BY nodeId;
– SELECT * from dapmanager_hosts_resource_info ORDER BY nodeId DESC,ipAddress ASC;
– SELECT * from dapmanager_hosts_resource_info ORDER BY nodeId DESC,ipAddress ASC;

– 分组:选择好分组的字段
– select * from dapmanager_hosts_resource_info group by nodeId,clusterId;
– 分组:对分组的结果集进行过滤
– select * from dapmanager_hosts_resource_info group by nodeId,clusterId HAVING clusterId = ‘0’;
– 分组:对分组结果进行过滤并排序
– select * from dapmanager_hosts_resource_info group by nodeId,clusterId HAVING clusterId = ‘0’ ORDER BY nodeId;