个别SQL写法
# 1.ALTER TABLE后面可以连续操作表相关的内容
ALTER table_name DROP INDEX idx_name, ADD INDEX idx_name (column1_name,<column2_name><,...>);//ALTER TABLE后面可以连续操作表相关的内容
# 2.USING关键字用法
SELECT * FROM ta INNER JOIN tb USING (id) WHERE ...;//USING关键字用法相当于ON
# 3.从满足搜索条件的结果集中随机更新一条数据
UPDATE table_name SET column1 = 'xxx' WHERE column2 = 'xxx' ORDER BY RAND() LIMIT 1;//从满足搜索条件的结果集中随机更新一条数据
# 4.查询优化器开关配置
SHOW [GLOBAL | SESSION] VARIABLES LIKE 'optimizer_switch';//查询优化器开关配置
# 5.强制查询优化器使用某个索引
SELECT * FROM table_name USE INDEX (idx_name) <WHERE ...>;//强制查询优化器使用某个索引
# 6.强制查询优化器忽略某个索引
SELECT * FROM table_name IGNORE INDEX (idx_name) <WHERE ...>;//强制查询优化器忽略某个索引
# 7.强制查询优化器忽略某些个索引,强制使用某些个索引
SELECT * FROM table_name IGNORE INDEX (idx_name1, idx_name2,...) USE INDEX (idx_name3,...) <WHERE ...>
# 8.
SHOW FULL PROCESSLIST;
# 9.引擎状态
SHOW ENGINE INNODB STATUS
MYSQL收集日志
1.General query log 通用查询日志
相关配置:
general_log=1
general_log_file=/path/to/file
log_output=FILE
2.Slow query log 慢查询日志
相关配置:
slow_query_log=1
slow_query_log_file=/path/to/file
long_query_time=0.2
log_output=FILE
3.Binary log 二进制日志
相关配置:
log-bin=/path/to/file
优化小技巧
1. auto_increment的bigint列替换成int unsigned类型的,可以节省空间
2. DATETIME数据类型是8个字节,TIMESTAMP数据类型是4个字节,可以节省空间
3. 使用ENUM类型
4. 列尽量设置为NOT NULL的
5. 连接查询时,字符集和排序规则要保持一致
6. IP地址可以用INT UNSIGNED类型代替,可以节省空间,INET_ATON() 和 INET_NTOA()方法提供转换
7. 查询时避免使用*,只查询需要的列
8. 子查询优化、重写