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

cq网络网站电脑pc端网站建设是什么意思

cq网络网站,电脑pc端网站建设是什么意思,做网站优化排名,2022年小规模企业所得税怎么征收多列索引 ​专栏内容#xff1a; postgresql使用入门基础手写数据库toadb并发编程 个人主页#xff1a;我的主页 管理社区#xff1a;开源数据库 座右铭#xff1a;天行健#xff0c;君子以自强不息#xff1b;地势坤#xff0c;君子以厚德载物. 文章目录 多列索引概述 …多列索引 ​专栏内容 postgresql使用入门基础手写数据库toadb并发编程 个人主页我的主页 管理社区开源数据库 座右铭天行健君子以自强不息地势坤君子以厚德载物. 文章目录 多列索引概述 多列索引创建 创建语法 创建说明 案例分析 创建数据 创建索引 带首列查询 不带首列查询 总结 结尾 概述 在实际业务的查询中往往会带有多个过滤条件涉及多个列而索引也能够以多列数据构成。 在postgresql 中一个索引可以由最多32个列来构建如果业务中有多列查询情况可以对此进行优化。 当然多列索引在应用时复杂度会提升应用不当反尔性能下降。 本文就来分享一下多列索引的使用同时通过案例来剖析它的原理揭示它的优势与不足避免遇坑。 多列索引创建 下面分享多列索引的创建语法在postgresql中的限制说明。 创建语法 多列索引的创建SQL语法如下 CREATE INDEX index_name ON table_name(column1, column2, ...);基本SQL形式与普通索引相同只是在选择表的列时可以指定为多列这里最多为32个列。 创建说明 支持的索引类型 当然也可以使用using子句指定索引类型不指定时默认为btree类型。 在postgresql中多列索引可以使用的索引类型有btree, brin, gin和gist其它类型不支持。 列的顺序 创建索引时指定列的顺序是有讲究的不然会事得其反。 在where条件中使用频繁程度高的列要放在前面依次排序。 比如 column1,column2,column3这样的顺序建索引时那么对于 ... where column1 a; ... where column1 a and column2 b; ... where column1 a and column2 b and column3 c; 这三种情况都可以用到该索引其中column1的使用频率最高column2次之最后是column3。 列的数量 虽然多列索引可以支持最大32列通过实践证明最多不要超过两到三列。 案例分析 通过对btree类型的多列索引进行分析看看多列索引的运行机制。 创建数据 为了演示方便我们创建如下数据表。 CREATE TABLE test1 (major int,minor int,last int,name varchar);往表中插入10万条测试数据。 postgres INSERT INTO test1(major,minor,last,name) select id, (random() * 100000)::int, (random() * 100000 100)::int, name || id::int FROM generate_series(1, 100000) as id;INSERT 0 100000创建索引 在major, minor, last 三列数据上创建一个索引操作如下 postgres create index idx_test1 ON test1 (major ,minor, last); CREATE INDEX postgres \d test1Table senlleng.test1Column | Type | Collation | Nullable | Default ---------------------------------------------------------major | integer | | |minor | integer | | |last | integer | | |name | character varying | | | Indexes:idx_test1 btree (major, minor, last)创建索引idx_test1它是在三列上创建的默认btree索引查看表定义可以看到索引已经创建。 下面我们来看看如何使用此索引。 带首列查询 这里先来看看带有索引首列major带的条件查询它可以分为以下情况 条件带有major, minor, last三列 postgres explain select * from test1 where major 1005 and minor 5000 and last 8000;QUERY PLAN ------------------------------------------------------------------------Index Scan using idx_test1 on test1 (cost0.42..8.44 rows1 width21)Index Cond: ((major 1005) AND (minor 5000) AND (last 8000)) (2 rows) 可以看到使用了刚才创建的索引 idx_test1那么我们将条件中各列的顺序进行调换再来看看。 postgres explain select * from test1 where last 8000 and minor 5000 and major 1005 ;QUERY PLAN ------------------------------------------------------------------------Index Scan using idx_test1 on test1 (cost0.42..8.44 rows1 width21)Index Cond: ((major 1005) AND (minor 5000) AND (last 8000)) (2 rows)同样也使用了索引同时很惊奇的发现 Index Cond: ((major 1005) AND (minor 5000) AND (last 8000)) 索引条件居然与我们where子句中的相反。 这一变动其实由查询优化器来做的它为什么这么做呢 哎看下面的案例分析就明白了。 带major另外两列之一 如果减少其中一列还会用到索引路径吗 下面我们来看看还有第一列major但是其它两列任选一列时会是什么情况发生呢 postgres explain select * from test1 where last 8000 and major 1005 ;QUERY PLAN ------------------------------------------------------------------------Index Scan using idx_test1 on test1 (cost0.42..8.44 rows1 width21)Index Cond: ((major 1005) AND (last 8000)) (2 rows)postgres explain select * from test1 where minor 5000 and major 1005 ;QUERY PLAN ------------------------------------------------------------------------Index Scan using idx_test1 on test1 (cost0.42..8.44 rows1 width21)Index Cond: ((major 1005) AND (minor 5000)) (2 rows)可以看到索引仍然使用到了。 当然单独带有第一列时也是同样可以使用索引的。 不带首列查询 如果不带第一列major时又会是什么情况呢 postgres explain select * from test1 where last 8000 and minor 5000 ;QUERY PLAN ------------------------------------------------------------Seq Scan on test1 (cost0.00..2137.00 rows7814 width21)Filter: ((last 8000) AND (minor 5000)) (2 rows)postgres explain select * from test1 where minor 5000 ;QUERY PLAN -------------------------------------------------------------Seq Scan on test1 (cost0.00..1887.00 rows95076 width21)Filter: (minor 5000) (2 rows)postgres explain select * from test1 where last 8000 ;QUERY PLAN ------------------------------------------------------------Seq Scan on test1 (cost0.00..1887.00 rows8218 width21)Filter: (last 8000) (2 rows) 带有第二列第三列或者它们两者独立作为条件执行计划中都没有使用到索引。 总结 在多列上创建索引时必须把使用最频繁的列放在索引列的最前面 通过案例分析可以看到只有在查询条件中带有第一列时查询计划中才会用到索引即使将条件中各列的顺序打乱优化器也会按索引中的列的顺序进行查找路径。 在使用多列索引时避免出现案例中索引失效的场景。 结尾 非常感谢大家的支持在浏览的同时别忘了留下您宝贵的评论如果觉得值得鼓励请点赞收藏我会更加努力 作者邮箱studysenllang.onaliyun.com 如有错误或者疏漏欢迎指出互相学习。 注未经同意不得转载
http://www.pierceye.com/news/455127/

相关文章:

  • 东莞seo网站推广怎么做能够让网站流量大
  • 郑州网站建设做推广吗灰色关键词排名方法
  • 在线推广企业网站的方法有哪些网站推广到海外怎么做
  • 怎么用视频做网站首页php网站开发职位
  • 网站平台怎么做typecho跟wordpress
  • 网站建设找什么公司微网站建设流程
  • 如何制作数据库网站哔哩哔哩推广平台
  • 免费建立手机网站网站建设下载模板之后怎么修改
  • wordpress 网站暂停做社区生意的网站
  • 渭南做网站的公司商业网站后缀名
  • 凡科建站电话邙山网站建设
  • 哪些网站可以做ppi小程序源码什么意思
  • 做公司网站都需要哪些东西产品画册设计公司
  • 网页优化与网站优西安开发网站建设
  • 大连建设监察执法网站免费icp备案服务码
  • 潮州做网站京东网站建设步骤
  • 遂宁模板建站公司懂福溶州做戒网站
  • 百度网站下拉排名农村电商平台发展现状
  • 移动端网站开发与网页开发区别wordpress首页文章显示
  • 有什么网站是layui做的wordpress 微信咨询菜单
  • 湖南网站seo营销x cache wordpress
  • 网站建设太金手指六六十八知名网站建设推荐
  • WordPress找不到站点做好评做销量的网站
  • 网站建设项目经历东莞市官网网站建设企业
  • FileZilla做网站程序开发的难点
  • 网站开发前端制作网站flsh怎么做
  • 建设网站需申请什么手续如何申请公司名称注册
  • 中山网站制无锡公司建立网站
  • 优化推广网站网站建设的岗位职责
  • 网站建设制作设计优化兰州如何用织梦建网站