Mysql数据库优化explain 用于事件前 explain各列意义 table type(最好到最差const / eq_reg / ref / range / index / all) possible_keys key key_len ref rows sql语句优化 1. 避免在where子句中进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描 如: sel作者王明昌发布时间2017-12-10最后更新2017-12-10文章目录explainsql语句优化explain 用于事件前 explain各列意义tabletype(最好到最差const / eq_reg / ref / range / index / all)possible_keyskeykey_lenrefrowssql语句优化复制1. 避免在where子句中进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描 如: select id from t where num is null 解决方法:设置默认值 2. 避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描 3. 避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描 4. in 和 not in 也要慎用,因为IN会使系统无法使用索引,而只能直接搜索表中的数据 5. 避免在索引过的字符数据中,使用非打头字母搜索。这也使得引擎无法利用索引。 6. 必要时强制查询优化器使用某个索引,如在 where 子句中使用参数,也会导致全表扫描 7. 尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描 8. 应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。 9. 不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。 10. 很多时候用 exists是一个好的选择,效率会提高 11. 避免使用不兼容的数据类型。例如float和int、char和varchar、binary和varbinary是不兼容的。数据类型的不兼容可能使优化器无法执行一些本来 可以进行的优化操作。 12. 充分利用连接条件,在某种情况下,两个表之间可能不只一个的连接条件,这时在 WHERE 子句中将连接条件完整的写上,有可能大大提高查询速度。 13. 使用视图加速查询 把表的一个子集进行排序并创建视图,有时能加速查询。它有助于避免多重排序 操作,而且在其他方面还能简化优化器的工作。 14. 能用DISTINCT的就不用GROUP BY 15. 永远为每张表设置一个主键 16. 使用ENUM而不是VARCHAR 17. 尽可能的使用NOT NULL default
2017-12-04案例-多表查询、子查询实例(有答案)1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20)
2017-12-10案例-多表查询、子查询实例03(有答案)一、设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2
2017-12-06案例-多表查询、子查询实例02(有答案)以下所有操作在查询管理器中手工书写sql语句完成 1、按下列步骤创建数据库和表 1.2、在这个数据库中创建一个名为[学生表]的表,由[学号]、[姓名]、[专业]、[班级] 字段组成。[学号] 字段为主
2018-01-18mysql数据表同时使用创建时间/更新时间字段原因:一张表同时只能使用一个current_timestamp 创表 1. 用createtime记录创建时间 2. 用updatetime记录更新时间 create table test1(a va
2018-07-09MySQL 中TEXT的使用TINYTEXT 256 bytes TEXT 65,535 bytes ~64kb MEDIUMTEXT 16,777,215 bytes ~16MB LONGTEXT 4,294,967,295
2018-12-11mysql错误 | Error writing file‘frm‘(Errcode: 28)Error writing file‘frm‘(Errcode: 28) 磁盘空间不足引起的,删除一些没用的东西吧