摘要:1,官方文档提出对于 MYISAM 引擎的表,索引越多,删得越慢; 2,官方文档提出,调整 key buffer size 可优化 MYISAM 引擎的表的删除记录的速度; 3,对于 MYISAM 表,TRUNCATE 速度比通过 DELETE 删除所有记录的速度快; 4,把需要留着的记录复制到另一
阅读全文
posted @ 2017-03-22 16:03
bobo2018
随笔分类 - SQL
摘要:1,官方文档提出对于 MYISAM 引擎的表,索引越多,删得越慢; 2,官方文档提出,调整 key buffer size 可优化 MYISAM 引擎的表的删除记录的速度; 3,对于 MYISAM 表,TRUNCATE 速度比通过 DELETE 删除所有记录的速度快; 4,把需要留着的记录复制到另一
阅读全文
posted @ 2017-03-22 16:03
摘要:可以通过 EXPLAIN 获取执行语句计划,从而优化语句。 会显示如下信息: 其中,id:select 语句的 ID; select_type:查询的基本类型(例如,简单的查询,union 查询,衍生表查询,即 from 子句里的子查询); table:输出的记录所在的 table; partiti
阅读全文
posted @ 2016-12-14 11:19
摘要:对于 IN (或者 =ANY)子查询,优化器有这些选择:Semi-join(从一个表中返回的行与另一个表中数据行进行不完全联接查询(查找到匹配的数据行就返回,不再继续查找)),Materialization,EXISTS strategy; 对于 NOT IN(或者 <>ALL)子查询,优化器有这些
阅读全文
posted @ 2016-12-08 11:07
摘要:连接分为 inner join,left join,right join,full join,cross join,在 MySQL 中 inner join 等价于 cross join; 左连接和右连接优化:1,全部 join 优化都用得上;2,全部 WHERE 优化都用得上;3,如果表 A 存在
阅读全文
posted @ 2016-12-06 09:36
摘要:MySQL 的 JOIN子句用于多表连接查询; 注意点:ON 子句用于设置连接的条件,例如:student.id=teacher.student_id,如果条件两边的字段同名则可以使用 USING 子句代替 ON 子句,例如,如果 student 表和 teacher 表都有字段 name,则可以使
阅读全文
posted @ 2016-11-30 14:48
摘要:推荐使用系统本身的生成方式,MySQL 就是 AUTO_INCREMENT; 特殊情况下要求生成特殊的唯一序列号,可根据随机数生成,且判断是否大于最大的序列号,若不是,则将原来最大的序列号加10,作为新的序列号;以下为生成唯一序列号的存储过程:
阅读全文
posted @ 2016-11-30 08:56
摘要:查询语句中嵌套的查询语句被称为子查询; 注意点:from 子句里的子查询被称为派生表,需要加上别名; limit 子句不能加在 in 子句中的子查询中,即 select * from xxx where XX in (select * from xxx limit 2) 不合法,正确的做法 sele
阅读全文
posted @ 2016-11-29 20:52
摘要:1,使用 values (),(),()这种形式; 2,如果 字段 default 为 null,那插入时字段为 null,就不要带上了,减少 MySQL 解析 SQL 的时间; 3,使用 LOAD DATA INFILE 的速度极高(暂时认为其为奇淫巧技); 4,索引的数量越多,插入越慢,且影响很
阅读全文
posted @ 2016-11-15 21:46
摘要:LIKE '%xxx%%' 的性能相当不好,因为索引不起作用,这样做全站搜索是性能极低的; 应该使用 FULLTEXT 索引,配合 match(列名) against(字段值)语法进行查询,提高性能(使用 FULLTEXT 索引不会对上面的情况有帮助);
阅读全文
posted @ 2016-10-23 21:09
摘要:1,去除一个表的重复记录: 至于有一个“冗余”的 select 语句的原因是:MySQL 不允许在修改表的时候查表,而多了一个 select 语句就创建了临时表,就不是修改表的时候查表; 2,行列转换 链接:http://blog.chinaunix.net/uid-7692530-id-25675
阅读全文
posted @ 2016-10-22 09:49
|