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

交互式手机网站邯郸网站建设咨询安联网络

交互式手机网站,邯郸网站建设咨询安联网络,石家庄网站外包公司,网站数据怎么会丢失单表访问 查询方式 MySQL查询的执行方式大致分为下边两种#xff1a; 使用全表扫描进行查询 这种执行方式很好理解#xff0c;就是把表的每一行记录都扫一遍嘛#xff0c;把符合搜索条件的记录加入到结果集就完了。不管是啥查询都可以使用这种方式执行#xff0c;当然 使用全表扫描进行查询 这种执行方式很好理解就是把表的每一行记录都扫一遍嘛把符合搜索条件的记录加入到结果集就完了。不管是啥查询都可以使用这种方式执行当然这种也是最笨的执行方式。 使用索引进行查询 因为直接使用全表扫描的方式执行查询要遍历好多记录所以代价可能太大了。如果查询语句中的搜索条件可以使用到某个索引那直接使用索引来执行查询可能会加快查询执行的时间。使用索引来执行查询的方式五花八门又可以细分为许多种类 针对主键或唯一二级索引的等值查询针对普通二级索引的等值查询针对索引列的范围查询直接扫描整个索引 设计MySQL的大叔把MySQL执行查询语句的方式称之为访问方法或者访问类型。下边细细道来各种访问方法的具体内容。 先创建一个表 CREATE TABLE single_table (id INT NOT NULL AUTO_INCREMENT,key1 VARCHAR(100),key2 INT,key3 VARCHAR(100),key_part1 VARCHAR(100),key_part2 VARCHAR(100),key_part3 VARCHAR(100),common_field VARCHAR(100),PRIMARY KEY (id), -- 主键KEY idx_key1 (key1), -- 二级索引UNIQUE KEY idx_key2 (key2), -- 唯一二级索引KEY idx_key3 (key3),-- 二级索引KEY idx_key_part(key_part1, key_part2, key_part3) -- 二级联合索引 ) EngineInnoDB CHARSETutf8; const 执行主键查询和唯一索引查询使用查询过程是等值查询不会出现范围查询 SELECT * FROM single_table WHERE id 1438; SELECT * FROM single_table WHERE key2 3841;ref 根据索引查询时只有叶节点查询结果是连续的 SELECT * FROM single_table WHERE key_part1 god like;SELECT * FROM single_table WHERE key_part1 god like AND key_part2 legendary;SELECT * FROM single_table WHERE key_part1 god like AND key_part2 legendary AND key_part3 penta kill;SELECT * FROM single_table WHERE key2 IS NULL; range 根据索引查询时非叶节点和叶节点查询结果是有范围的 SELECT * FROM single_table WHERE key2 IN (1438, 6328) OR (key2 38 AND key2 79);index 遍历二级索引 -- (key_part1, key_part2, key_part3)组成联合索引 SELECT key_part1, key_part2, key_part3 FROM single_table WHERE key_part2 abc;all 全表扫描 索引合并 我们前边说过MySQL在一般情况下执行一个查询时最多只会用到单个二级索引但不是还有特殊情况么在这些特殊情况下也可能在一个查询中使用到多个二级索引设计MySQL的大叔把这种使用到多个索引来完成一次查询的执行方法称之为index merge具体的索引合并算法有下边三种。 合并的前提是索引返回的主键值是有序的 Intersection合并 Intersection为交集 -- 二级索引key1返回的是key1值为a的主键值在B树中相同索引的排序方式是按主键大小排序所以二级索引key1返回的主键是有序的key3同理 SELECT * FROM single_table WHERE key1 a AND key3 b;SELECT * FROM single_table WHERE key1 a AND (key_part1 a AND key_part2 b AND key_part3 c);SELECT * FROM single_table WHERE id 100 AND key1 a;合并过程就是归并排序 不能进行合并 -- 这种情况key1返回的值是无序的 SELECT * FROM single_table WHERE key1 a AND key_part1 a AND key_part2 b AND key_part3 c;-- 联合索引返回的值也是无序的 SELECT * FROM single_table WHERE key1 a AND key_part1 a; Union合并 交集 -- 前提也是返回主键有序 SELECT * FROM single_table WHERE key1 a OR key3 bSELECT * FROM single_table WHERE key1 a OR ( key_part1 a AND key_part2 b AND key_part3 c);不能的情况 SELECT * FROM single_table WHERE key1 a OR (key_part1 a AND key_part2 b AND key_part3 c);SELECT * FROM single_table WHERE key1 a OR key_part1 a;Sort-Union合并 Union索引合并的使用条件太苛刻必须保证各个二级索引列在进行等值匹配的条件下才可能被用到比方说下边这个查询就无法使用到Union索引合并 SELECT * FROM single_table WHERE key1 a OR key3 z这是因为根据key1 a从idx_key1索引中获取的二级索引记录的主键值不是排好序的根据key3 z从idx_key3索引中获取的二级索引记录的主键值也不是排好序的但是key1 a和key3 z这两个条件又特别让我们动心所以我们可以这样 先根据key1 a条件从idx_key1二级索引中获取记录并按照记录的主键值进行排序再根据key3 z条件从idx_key3二级索引中获取记录并按照记录的主键值进行排序因为上述的两个二级索引主键值都是排好序的剩下的操作和Union索引合并方式就一样了。 并多了一步对二级索引记录的主键值排序的过程。 小贴士 为啥有Sort-Union索引合并就没有Sort-Intersection索引合并么因为并集是两个子集的排序结果排序前合并还是排序后合并都是一样的但交集却会舍去一些元素所以会影响效率 剩下的操作和Union索引合并方式就一样了。 并多了一步对二级索引记录的主键值排序的过程。 小贴士 为啥有Sort-Union索引合并就没有Sort-Intersection索引合并么因为并集是两个子集的排序结果排序前合并还是排序后合并都是一样的但交集却会舍去一些元素所以会影响效率
http://www.zqtcl.cn/news/896963/

相关文章:

  • 西安响应式网站青岛网站制作哪里有
  • 政务服务网站建设合肥seo排名扣费
  • 郑州做网站的大公司无锡网站程序
  • 打开网站是空白页面营销型网站建设应该考虑哪些因素
  • 做网站开麻烦吗个人网站备案网站名称
  • 瑞诺国际做外贸网站好吗网站端和移动端分开建设域名一样么
  • 如何网站点击率网站程序开发技术
  • 深圳网站建设售后服务怎样.net网站开发简介
  • 光谷软件园 网站建设中国国家数据统计网
  • wordpress 主页位置seo是什么意思教程
  • 网站开发甘特图网站是别人做的域名自己怎么续费
  • 如何查询网站是否备案江苏省句容建设局网站
  • 中国商业网点建设开发中心官方网站天津中小企业网站制作
  • 莱芜网站建设及优化云开发小程序源码
  • 珠海商城网站学校建网站
  • 自己网站如何做关键词排名网站配色网
  • 做二手物资哪个网站好江苏大汉建设实业集团网站
  • j2ee 建设简单网站Wordpress 导航条样式
  • 创客贴网页设计网站企业局域网
  • 深圳哪里网站制作云南建设网站首页
  • 赤峰做网站哪家好岳阳网站设计u
  • 腾讯云10g数字盘做网站够么网站开元棋牌怎么做app
  • 天津网站建设信息科技有限公司门户网站开发公司排名
  • 优秀策划设计网站jsp mysql开发网站开发
  • 深圳做微信网站建设我爱水煮鱼 wordpress
  • 企业网站推广是不是必要的蓝色网站建设
  • 浙江企业响应式网站建设网站建设 找vx cp5173
  • nodejs做的网站音乐网站制作教程
  • 怎么利用网站做外链接阿里云网站部署
  • 做学校网站简述网站的制作步骤