mysql
learsea
这个作者很懒,什么都没留下…
展开
-
Mysql优化之延迟关联
有如下sql:SELECT * FROMuser WHERE name='abc' ORDER BYage LIMIT10000,10。这个语句同时使用了order和limit,如果没有索引的话会很慢。那么可以加上如下索引(name,age)。但是加索引之后可能还是很慢,因为这个索引不是覆盖索引,查询字段为*,需要回表取索引之外的字段。因为这条语句实际上只需要10条数据,所以可以针对lim...原创 2019-04-09 16:20:50 · 313 阅读 · 0 评论 -
Mysql优化之表连接
mysql多表连接采用block nested loop算法,即循环嵌套连接:将驱动表的结果集作为循环基础数据,然后循环从该结果集每次一条获取数据作为下一个表的过滤条件查询数据,然后合并结果。如果有多表join,则将前面的表的结果集作为循环数据,取到每行再到联接的下一个表中循环匹配。驱动表的选择对性能影响很大。一般情况下,驱动表数据越少效率越高,即用小表驱动大表效率比较高。mysql会对我们写的s...原创 2019-04-08 16:38:13 · 399 阅读 · 0 评论 -
mysql基本约定与命名规范
一、约定1、如无特殊需求,所有表使用innodb引擎2、如无特殊需求,所有主键均为自增类型3、如无特殊需求,所有字段均为NOT NULL,并给定默认值4、所有字段均设置备注,枚举字段需要说明每个枚举值的意义5、在能满足取值范围的情况下,选择占用存储空间最小的数据类型。如布尔值使用tinyint,时间类型使用timestamp二、命名规范...原创 2016-10-20 15:17:08 · 12642 阅读 · 0 评论 -
Mysql优化之ORDER BY 与filesort
mysql的索引本身已经排序,若order by能正确利用索引则不需要在额外排一次序。ORDER BY的sql语句应遵循一下规则,将filesort优化为index:1、ORDER BY 语句使用索引最左前列。2、使用WHERE子句与ORDER BY子句条件列组合满足索引最左前列。以下情况会导致filesort:1、没有覆盖索引2、where语句与order by语句使用了不同的...原创 2019-04-22 11:49:42 · 729 阅读 · 0 评论