当前位置: 首页 > news >正文

网站管理公司排名上海网站制作价格

网站管理公司排名,上海网站制作价格,公司网站开发报价,wordpress服务器要多大内存一、分页优化 limit 1000 10#xff0c; 其实不是只查询出10条记录#xff0c;mysql底层会查询出1100条#xff0c;然后舍去前1000条 所以#xff0c;随着页的增多#xff0c;查询效率会降低 1、可以使用取范围的方式比如id1000 方式优化 2、使用关联查询优化#xf… 一、分页优化 limit 1000 10 其实不是只查询出10条记录mysql底层会查询出1100条然后舍去前1000条 所以随着页的增多查询效率会降低 1、可以使用取范围的方式比如id1000 方式优化 2、使用关联查询优化子表使用覆盖索引不用查出来所有数据主表关联子表查询出数据 二、关联表执行过程 1两种算法 1、嵌套循环连接 Nested-Loop Join(NLJ) 算法 一次一行循环地从第一张表称为驱动表中读取行在这行数据中取到关联字段根据关联字段在另一张表被驱动 表里取出满足条件的行然后取出两张表的结果合集 2、基于块的嵌套循环连接 Block Nested-Loop Join(BNL)算法 把驱动表的数据读入到 join_buffer 中然后扫描被驱动表把被驱动表每一行取出来跟 join_buffer 中的数据做对比 join_buffer默认是256k如果驱动表中数据大于join_buffer的容量会分配取数据到join_buffer 例如select * from t1 inner join t2 on t1.a t2.a; 驱动表先执行 优化器一般会优先选择小表做驱动表。所以使用 inner join 时排在前面的表并不一定就是驱动表。 当使用left join时左表是驱动表右表是被驱动表 当使用right join时右表时驱动表左表是被驱动表 当使用join时mysql会选择数据量比较小的表作为驱动表大表作为被驱动表。 在被驱动表的关联字段中有索引的情况下 上面sql的大致流程如下 1. 从表 t2 中读取一行数据如果t2表有查询过滤条件的会从过滤结果里取出一行数据 2. 从第 1 步的数据中取出关联字段 a到表 t1 中查找 3. 取出表 t1 中满足条件的行跟 t2 中获取到的结果合并作为结果返回给客户端 4. 重复上面 3 步。 如果被驱动表关联字段没有索引 上面sql的大致流程如下 1. 把 t2 的所有数据放入到 join_buffer 中 2. 把表 t1 中每一行取出来跟 join_buffer 中的数据做对比 3. 返回满足 join 条件的数据 2关联sql的优化 1、关联字段加索引 2、小表驱动大表可以使用straight_join 明确驱动表例如select * from t2 straight_join t1 on t2.a t1.a; 代表指定mysql选着 t2 表作为驱动表。 只适用inner joinleft right join已经明确了驱动表和被驱动表 3in 和 exsits优化 原则小表驱动大表 in当B表的数据集小于A表的数据集时in优于exists select * from A where id in (select id from B) 等价于 for(select id from B){  select * from A where A.id B.id } exists当A表的数据集小于B表的数据集时exists优于in 将主查询A的数据放到子查询B中做条件验证根据验证结果true或false来决定主查询的数据是否保留 select * from A where exists (select 1 from B where B.id A.id) 等价于: for(select * from A){     select * from B where B.id A.id } 1、EXISTS (subquery)只返回TRUE或FALSE,因此子查询中的SELECT * 也可以用SELECT 1替换,官方说法是实际执行时会 忽略SELECT清单,因此没有区别 2、EXISTS子查询的实际执行过程可能经过了优化而不是我们理解上的逐条对比 3、EXISTS子查询往往也可以用JOIN来代替何种最优需要具体问题具体分析 三、count 1、对比效率 1select count(1) from user; 2select count(id) from user; 3select count(name) from user; 4select count(*) from user; 效率对比,如果name有索引  4132 如果没有 4123 count(*)mysql做了优化不会把所有字段查出来不取值按行累加 count1也是不取值按行累加 countname会把name值取出来累加 countid会把id取出来累加 因为countid走的主键索引countname走的二级索引二级索引数据量相对小 所以countname会快一点但是countidmysql也会优化不走主键索引走二级索引如果有的话 注意一点的count字段如果字段值为null不计分count而count*会计入null值 2、优化count 如果表数据大count需要优化 myisam储存引擎表不带where条件的count查询很快因为总行数会被mysql储存在磁盘上 如果是innodb不会维护count因为有mvcc 如果不需要精确获取的话可以用 show table status like table名;获取count 如果需要请求可以把count维护在redis或者数据表中
http://www.hkea.cn/news/14556451/

相关文章:

  • 网站建设明薇通网络不错网页显示站点不安全
  • 宿州网站建设电话工作做ppt课件的网站
  • 开发型网站报价方法成都有哪十大装饰公司
  • 机械手表网站濮阳建设网
  • 中国建设银行网站首页手机银行安化建设局网站
  • 北京朝阳网站建设网站排名费用
  • 官方网站查询高考分数网站建设实战视频教程
  • 可信赖的企业网站开发自己做的网站百度搜不到
  • 一站式海外推广平台域名是什么 有什么用
  • jquery 打开新网站怎么做网站的优化排名
  • 网站建设流程域名申请广东购物网站建设
  • 用什么做网站最简单深圳画册设计企业
  • 企业网站推广方法贵州企业网站建设案例
  • 徐州百度网站快速优化旅游企业网站建设工作的通知
  • 西安做公司网站江西住建云网站
  • 中文域名做的网站有哪些浏览网址大全
  • 学校网站建设年度总结湖南网络工程职业学院
  • 成都市建设网站首页上海网站制作服务
  • 做网站公司需要多少钱iis做的网站如何添加播放器
  • 网站开发需要什么服务器如何做网站 知乎
  • 服务企业网站建设的ITwordpress栏目id顺序
  • 做彩票网站需要境外微信官网网页版登录入口
  • 提升网站流量网站优化分析软件
  • 个人备案域名可以做哪些网站吗网站开发可行性技术方案
  • 网站是否被k无锡平台公司
  • 江苏建设科技网站禅城网站开发
  • wordpress手机图片站公司建设网站属于什么科目
  • 石家庄栾城区建设局网站企业品牌vi设计
  • 深圳市鸿运通网站建设网站关键词的选择
  • 怎样做微课网站网站底部导航