暂无图片
select * from tb where a = x and b = x and c =x 怎么考虑究竟是 a b c 3 个索引还是abc联合索引呢?
我来答
分享
QIU飞
2021-10-09
select * from tb where a = x and b = x and c =x 怎么考虑究竟是 a b c 3 个索引还是abc联合索引呢?
select * from tb where a = x and b = x and c =x 怎么考虑究竟是 a b c 3 个索引还是abc联合索引呢?
我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
赵勇

索引有缺点:索引会额外占用空间,同时,索引中包含的列越多,索引的体积越大,而且,相关列上的值有变化时,也就需要做索引维护。所以,需要综合考虑,在提升查询性能的同时,还能兼顾索引的维护成本(空间和维护开销)。因此,我们应该在选择性最好的列上创建索引,如果ABC三列中存在主键列或者近似主键列选择性的列或列的组合,可以考虑在这些列上创建索引。如果是多列索引,还要考虑谁在前,谁在后。这个需要具体问题,具体分析了。

暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
chengang

从这个语句看。 如果有(a,b,c) 这三个字段的联合索引。是能用上联合索引的。


理解怎么使用联合索引。联合索引能使用几个即(key_len)需要了解B+tree 结构及最左匹配原则,简单的说,最左开始匹配。遇到范围查找即终止使用后面的字段了。

暂无图片 评论
暂无图片 有用 0
打赏 0
薛晓刚

如果你允许只用abc任意一个都可以作为过滤条件,那么就你建立3个单独的

如果你a是必选,那么ab ac就是联合的

暂无图片 评论
暂无图片 有用 0
打赏 0
Lucifer三思而后行
暂无图片

看执行效率吧,你可以做个测试,实践检验真理。

分别加三个索引,然后看执行计划和效率。

只创建联合索引,然后看执行计划和效率。

自己测试过之后,比别人的一面之词有用的多。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
多列外关联SQL语句写法
回答 1
已采纳
这种写法可以的。不过严谨些应该是:SELECTA.C1,A.C2,B,C1,B.C2FROMA,(SELECTC1,C2,C1||'/'||C2C12FROMB)BWHEREA.C1||'/'||A.
为什么学了SQL还要学ETL呢?
回答 2
已采纳
这两者根本就不能放在一起比较,因为这两者是描述的不同的东西。ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程结构化查询语言(StructuredQueryLanguage)简称SQL
请教一个sql或者实现思路?
回答 1
如果只是想查9月1号至3号都有商品的商店,那就太简单了,你可以这样查:select商店from库存表wheretrunc(todate(日期,'yyyymmdd'))betweendate'20219
该正则替换在oracle和mysql8中查询的结果不一致,请问在mysql8中应该如何修改表达式?
回答 2
SELECTregexpreplace('aaabbxaee','(\\w)\\1{1,}','\\1');mysql正则里的"\"都要转义
不熟悉客户的业务流程和业务逻辑,能否做SQL语句优化?
回答 4
我倒是觉得,如果熟悉客户的业务流程和业务逻辑,那么在某些sql优化上,可以获得不一样的思路。比如有时候为了获取一个字段代码的翻译,去关联了一个超大表,但你如果熟悉业务的话,会知道这个字段代码翻译有在另
大神们: 这个是什么问题?运行100次,偶尔1~2次报如下错误,是job自动运行的。
回答 10
找DBA呀,他有办法查看呀。
19C数据库的后台SQL
回答 1
居然这么久没人回答?
请大家帮我看看这个sql语句慢在哪了?
回答 1
可以用mergeinto
原来的数据库版本是SQL2008 现在换成SQL2016 原来的数据库文件能直接附加吗?
回答 1
2008的好像可以直接附加。2000才不行
有没有办法做出如下图的行列转换?
回答 1
已采纳
(/ω\)你这是列名都要转进去?直接把数据导出到excel,然后用excel的TRANSPOSE函数转吧