zoukankan      html  css  js  c++  java
  • mysql优化

    若表中有一个联合索引(c1,c2,c3,c4),则表示c2在c1下是有序的,c3在c2下是有序的,c4在c3下是有序的。若c2断了(没有使用上索引)则c3,c4不会再有作用,其他同理

    想分组就必须有序,若无序则会创建临时表并进行数据排序,有序则不会创建临时表。

    mysql的引擎innodb和myisam的区别(myisam不支持事物):

    因为在innodb中数据量过大,id下面挂载的数据会形成数据块,查找效率会变慢;又因为只查找id,所以只会在复合索引(id,ver)中查找,速度更快。

    若engine是myisam,则效率差不多。

    分页优化:

    select .. from xx limit (pageNo-1)*pageSize,pageSize

    若是 10000 10010,则会先查出10010条数据再过滤出后面的10条数据,效率很差。

    优化 1.从业务上优化,比如只允许查找10页的数据

       2.从代码上,在删除数据时设置一个标记字段is_delete为1,不要真的删除数据,这样可以利用主键索引

       select .. from xx where id > (pageNo-1)*pageSize limit 10;

       若真要删除数据则可以使用延迟索引

      延迟索引:使用索引查询出来数据,之后把查询结果和同一张表中数据进行连接查询,进而提高查询速度!分页是一个很常见功能

      select c.id,c.name from xx as c inner join

             (select id from xx limit 10000,10) as t on t.id=c.id;

      

      in和exists的效率不高

      

     null的特殊性:列 name is null,name is not null

    索引:key(普通索引),unique key(唯一索引),primary key(主键索引),fulltext(全文索引)

  • 相关阅读:
    一个泛型栈类(GenericStack)
    Google Maps API v2初探
    浅谈工作中celery与Redis遇到的一些问题 PTSD
    python PTSD
    77%的Linux运维都不懂的内核问题
    教程 | Linux常用命令大全
    分布式架构系列: 负载均衡技术详解
    10大Python开源项目推荐(Github平均star2135)
    你必须学写 Python 装饰器的五个理由
    五分钟搞定 Linux 文档全部知识,就看这篇文章
  • 原文地址:https://www.cnblogs.com/james-roger/p/6197909.html
Copyright © 2011-2022 走看看