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

wordpress 批量修改文章分类辽宁好的百度seo公司

wordpress 批量修改文章分类,辽宁好的百度seo公司,办公空间设计尺寸标准,黑马程序员和比特就业课本篇文章介绍mysql基于成本选择索引的行为#xff0c;解释为什么有时候明明可以走索引#xff0c;但mysql却没有走索引的原因 mysql索引失效的场景大致有几种 不符合最左前缀原则在索引列上使用函数或隐式类型转换使用like查询#xff0c;如 %xxx回表代价太大索引列区分度过… 本篇文章介绍mysql基于成本选择索引的行为解释为什么有时候明明可以走索引但mysql却没有走索引的原因 mysql索引失效的场景大致有几种 不符合最左前缀原则在索引列上使用函数或隐式类型转换使用like查询如 %xxx回表代价太大索引列区分度过低数据量少没有走索引的必要in中的条件过多 其中前三种失效场景是因为无法利用索引的有序性。而后面几种场景则是Mysql从成本上考虑认为走索引的代价比不走索引的代价高因此Mysql没有走索引。 同样的如果我们一个查询可以利用多个索引那么mysql最终会走哪个索引呢这也是基于成本考虑的哪个索引的成本更低就使用哪个索引。 我们可以来做个实验。创建一个person表该表有一个主键索引一个联合索引以及一个create_time索引。 CREATE TABLE person (id bigint NOT NULL AUTO_INCREMENT,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,score int NOT NULL,create_time timestamp NOT NULL,PRIMARY KEY (id) USING BTREE,INDEX name_score(name, score) USING BTREE,INDEX create_time(create_time) USING BTREE ) ENGINE InnoDB AUTO_INCREMENT 100000 CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci ROW_FORMAT Dynamic;通过下面的存储过程循环创建 10 万条测试数据。 CREATE DEFINERroot% PROCEDURE insert_person() begindeclare c_id integer default 1;while c_id100000 doinsert into person values(c_id, concat(name,c_id), c_id100, date_sub(NOW(), interval c_id second));set c_idc_id1;end while; end接下来查看下面语句的执行计划。从执行计划中可以看出该sql可能走name_score和create_time俩个索引。但最终mysql选择的确实全表扫描 EXPLAIN SELECT * FROM person WHERE NAME name84059 AND create_time2023-09-05 05:00:00我们查询条件的时间从5点修改成22点在查看执行计划发现此时走了create_time索引。 EXPLAIN SELECT * FROM person WHERE NAME name84059 AND create_time2023-09-05 22:00:00同一条sql不同的查询条件mysql会根据计算的成本选择走或不走索引。这里的成本主要包括IO成本和CPU成本 IO 成本是从磁盘把数据加载到内存的成本。CPU 成本是检测数据是否满足条件和排序等 CPU 操作的成本。 我们仔细看上面俩个执行计划的rows列可以很明显的发现第二个执行计划的rows小得多也就是说要扫描的行更小CPU的成本也就会更小所以mysql选择了走索引。 在Mysql5.6及之后的版本中我们还可以使用optimizer trace功能查看每个索引、全表扫描具体的成本是多少从而知道mysql为什么选这个索引或为什么走全表扫描。 如下代码所示打开 optimizer_trace 后再执行 SQL 就可以查询 information_schema.OPTIMIZER_TRACE 表查看执行计划了最后可以关闭 optimizer_trace 功能 SET optimizer_traceenabledon; SELECT * FROM person WHERE NAME name84059 AND create_time2023-09-05 05:00:00; SELECT * FROM information_schema.OPTIMIZER_TRACE; SET optimizer_traceenabledoff;OPTIMIZER_TRACE部分片段如下 analyzing_range_alternatives: {range_scan_alternatives: [{index: name_score,ranges: [name84059 name],index_dives_for_eq_ranges: true,rowid_ordered: false,using_mrr: false,index_only: false,rows: 25362,cost: 27618.4, #走name_score索引需要花费的成本chosen: false, #没有选择name_score索引cause: cost},{index: create_time,ranges: [0x64f64550 create_time],index_dives_for_eq_ranges: true,rowid_ordered: false,using_mrr: false,index_only: false,rows: 46320, #走create_time索引需要花费的成本cost: 50440.2, #没有选择create_time索引chosen: false,cause: cost}]} {considered_execution_plans: [{plan_prefix: [],table: person,best_access_path: {considered_access_paths: [{rows_to_scan: 92641,access_type: scan, #走全表花费的成本resulting_rows: 92641,cost: 9549.9,chosen: true}]},condition_filtering_pct: 100,rows_for_plan: 92641,cost_for_plan: 9549.9,chosen: true}]}从optimizer_trace中我们可以看出name_score索引、create_time索引、全表扫描的成本分别是27618.4、50440.2、9549.9所以mysql最终选择了全表扫描。 有时候mysql也可能会选错索引此时我们可以通过FORCE INDEX强制mysql走索引如 SELECT * FROM person FORCE INDEX(create_time) WHERE NAME name84059 AND create_time2023-09-05 05:00:00当然实际上并不建议使用FORCE INDEX因为mysql的选择往往会更正确
http://www.hkea.cn/news/14368475/

相关文章:

  • 崇仁网站建设推广费用crm客户管理系统简历
  • h5制作的网站网站建设与管理总结
  • 图片分享网站源码京东商城官网入口
  • 网站搭建官网wordpress添加wow
  • 广东省交通建设监理检测协会网站小白怎么做网站赚钱
  • 网站设计的英文运城购物网站开发设计
  • 网站建设的岗位叫什么推广企业网站最主要的方式
  • 网站建设策划实训总结网站开发 税率
  • 焊接加工订单网seo咨询顾问
  • 辽宁省营商环境建设局网站备案时网站名称
  • 成交型网站建设方案做会员卡网站
  • 怎么样自己制作网站百度地图在线导航查询
  • 旅游网站开发近五年参考文献wordpress端口更改
  • 沈阳城市建设学院官网网站中山做营销型网站
  • 响应试网站和移动端如何推广一个平台
  • 手机网站字体大小规范做网站如何被收录
  • 重新安wordpress网站分毫报价小程序
  • 网站推广 方法psd企业网站模板
  • 建设网站软件帝国和织梦哪个做网站好
  • 邢台中北世纪城网站兼职WordPress mk主题
  • 网站前端开发培训西安珠海溢动网络科技有限公司
  • 北海市住房和城乡建设局网站成都较出名的广告公司
  • 属于网站的管理 更新 维护怎么自己公司名下的网站
  • 电商网站开发文献综述莱芜最新钟点工招聘
  • 2018建设工程管理招团支部网站佛山主题网站设计多少钱
  • 3d打印 东莞网站建设Wordpress development
  • 杭州自助建站模板项目名称
  • wordpress主题背景插件自动优化app
  • 做相亲网站的安全责任成都紧急通知
  • iapp网站怎么做软件wordpress 没关插件