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

蛇口网站建设公司医疗器械网站素材

蛇口网站建设公司,医疗器械网站素材,网站推广活动策划,旅游网站开发的意义1引言#xff1a; 如果频繁地使⽤相同的⼏个字段查询#xff0c;就可以考虑建⽴这⼏个字段的联合索引来提⾼查询效率。⽐如对 于联合索引 test_col1_col2_col3#xff0c;实际建⽴了 (col1)、(col1, col2)、(col, col2, col3) 三个索引。联合 索引的主要优势是减少结果集数量… 1引言 如果频繁地使⽤相同的⼏个字段查询就可以考虑建⽴这⼏个字段的联合索引来提⾼查询效率。⽐如对 于联合索引 test_col1_col2_col3实际建⽴了 (col1)、(col1, col2)、(col, col2, col3) 三个索引。联合 索引的主要优势是减少结果集数量如果根据 col1、col2、col3 的单列索引进⾏查询需要分别得到 num[i] 个结果然后再取交集⽽如果使⽤联合索引查询只会得到很少的⼀段数据。 最左匹配原则这些索引能够被包含 col1、(col1 col2)、(col1 col2 col3) 的查询利⽤到但是不能够 被 col2、(col2、col3) 的等值查询利⽤到。这与底层实现有关。联合索引的最左匹配原则在遇到范围 查询、、between、like 包括like 林%这种的时候就会停⽌匹配也就是范围列可以⽤到联合 索引但是范围列后⾯的列⽆法⽤到联合索引。但是如果是 、 时可以继续⾛索引。 2.实例化过程 当使用MySQL创建数据库表时可以使用以下语法 CREATE TABLE table_name (column1 datatype constraint,column2 datatype constraint,...PRIMARY KEY (column1),INDEX index_name (column2, column3) );其中table_name 是要创建的表的名称column1, column2, ... 是表的列名datatype 是列的数据类型constraint 是列的约束条件。 要创建联合索引可以使用 INDEX 关键字后面跟着索引的名称和要包含在索引中的列名。在创建联合索引时列名之间使用逗号分隔。 最左匹配原则是指在联合索引中索引会按照列的顺序进行排序并且查询时只能使用索引的最左边的列开始匹配。这意味着如果查询中的条件不包含索引的最左边的列那么索引将无法被使用。 例如假设有一个名为 users 的表包含以下列id, first_name, last_name, email。我们想要创建一个联合索引包含 first_name 和 last_name 列 CREATE TABLE users (id INT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(100),INDEX name_index (first_name, last_name) );让我们在上面创建的 users 表中插入一些数据来验证最左匹配原则。 INSERT INTO users (id, first_name, last_name, email) VALUES (1, John, Doe, john.doeexample.com), (2, Jane, Smith, jane.smithexample.com), (3, John, Smith, john.smithexample.com), (4, Jane, Doe, jane.doeexample.com);上述语句将向 users 表中插入四条数据。现在我们可以使用不同的查询条件来验证最左匹配原则。 查询条件包含索引的最左边的列 SELECT * FROM users WHERE first_name John AND last_name Doe;这个查询将返回 id1 的记录因为查询条件完全匹配了索引的最左边的列。 SELECT * FROM users WHERE first_name John AND last_name Smith;这个查询将返回  id3 的记录因为查询条件完全匹配了索引的最左边的列和第二个列。 SELECT * FROM users WHERE last_name Doe;这个查询将无法使用索引因为查询条件没有包含索引的最左边的列。它将执行全表扫描返回所有满足 last_name Doe 的记录。 通过以上示例我们可以看到最左匹配原则的效果。只有当查询条件包含索引的最左边的列时索引才能被充分利用加速查询。否则索引将无法被使用查询将变得较慢。 3.说明 左匹配原则就是指在联合索引中如果你的 SQL 语句中用到了联合索引中的最左边的索引那么这条 SQL 语句就可以利用这个联合索引去进行匹配。例如某表现有索引(a,b,c)现在你有如下语句 select * from t where a1 and b1 and c 1; #这样可以利用到定义的索引a,b,c,用上a,b,cselect * from t where a1 and b1; #这样可以利用到定义的索引a,b,c,用上a,bselect * from t where b1 and a1; #这样可以利用到定义的索引a,b,c,用上a,cmysql有查询优化器select * from t where a1; #这样也可以利用到定义的索引a,b,c,用上aselect * from t where b1 and c1; #这样不可以利用到定义的索引a,b,cselect * from t where a1 and c1; #这样可以利用到定义的索引a,b,c但只用上a索引b,c索引用不到 也就是说通过最左匹配原则你可以定义一个联合索引但是使得多中查询条件都可以用到该索引。 值得注意的是当遇到范围查询(、、between、like)就会停止匹配。也就是 select * from t where a1 and b1 and c 1; #这样a,b可以用到a,b,cc索引用不到 这条语句只有 a,b 会用到索引c 都不能用到索引。这个原因可以从联合索引的结构来解释。 但是如果是建立(a,c,b)联合索引则a,b,c都可以使用索引因为优化器会自动改写为最优查询语句。 select * from t where a1 and b 1 and c1; #如果是建立(a,c,b)联合索引则a,b,c都可以使用索引 #优化器改写为 select * from t where a1 and c1 and b 1; 这也是最左前缀原理的一部分索引index1:(a,b,c)只会走a、a,b、a,b,c 三种类型的查询其实这里说的有一点问题a,c也走但是只走a字段索引不会走c字段。 另外还有一个特殊情况说明下select * from table where a 1 and b ‘2’ and c3 这种类型的也只会有 a与b 走索引c不会走。 像select * from table where a 1 and b ‘2’ and c3 这种类型的sql语句在a、b走完索引后c肯定是无序了所以c就没法走索引数据库会觉得还不如全表扫描c字段来的快。 以index a,b,c为例建立这样的索引相当于建立了索引a、ab、abc三个索引。一个索引顶三个索引当然是好事毕竟每多一个索引都会增加写操作的开销和磁盘空间的开销。   参考 https://www.cnblogs.com/-mrl/p/13230006.html
http://www.hkea.cn/news/14291276/

相关文章:

  • 电子商务网站建设与管理第二版短视频推广策划方案
  • 网站建设中图片尺寸网站是先备案还是先做网站
  • 淄博周村网站建设方案西安网站建设云阔
  • 商务网站的规划流程企业网app下载
  • 网站建设 优化班级网站主页设计模板
  • 专业的网站设计建设800元建网站
  • 做一个网站小程序开发公司制作
  • 大连网站建设新图闻山东省建设教育集团网站首页
  • 程序员做游戏还是做网站好0453牡丹江信息网二手房买卖
  • 赤城县城乡建设局网站国内做分销比较好的平台
  • 桥 网站建设茶百道加盟费大概要多少
  • 如何做好品牌网站建设方案福州建设工程协会网站查询系统
  • 新网站怎样做优化.ent做的网站有哪些
  • 中国河北网站网站开发 私活
  • 昆山公司做网站wordpress 什么值得买 我要爆料
  • 建设工程消防网站进入程序优质的网站自助建站
  • php企业公司网站源码上海短视频推广
  • 任经理 徐州网站建设对中国建设银行网站的缺点
  • 贵阳网站开发哪家好wordpress常规选项
  • 网站可以只做移动端吗网站开发项目技能比赛获奖报道
  • asp.net mysql 网站开发wordpress删除页头页尾
  • 西部数据网站助手wordpress 手风琴
  • 芜湖市网站开发重庆短视频制作公司排名
  • 廊坊网站建设方案湛江市住房建设局网站
  • 网站开发流程图解释含义免费无网络游戏大全
  • 做投资的网站好东营智能网站设计
  • 电子商务网站建设 代码网络营销模式有哪些?
  • wordpress禁用谷歌字体禁用头像网站怎么做免费seo搜索引擎
  • 网站建设亿玛酷技术网站百科怎么做
  • 先做他个天猫网站哪个网站做黑色星期五订酒店活动