栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

两个sql查询的性能之间的区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

两个sql查询的性能之间的区别?

从您的评论中获取意见:“我只想知道匹配开始与匹配结束之间是否存在差异”。

首先-请记住,我们并不是在寻找匹配字符串的最佳算法。我们正在寻找最佳算法,以找到一组N行中的所有匹配字符串。我们想要做得比“做算法X,N次”更好。

如果未对fieldname进行索引,则两个查询之间的性能差异将很小-SQL引擎将只对字符串的前3个字节或后3个字节进行匹配,这只是偏移到正确的内存位置。

如果对字段名进行索引,则两次搜索之间的性能将存在巨大差异,因为我们可以丢弃大部分数据,而不是检查所有N行。

即对于“ xyz%”版本,我们可以使用二进制搜索。

我们从中间元素开始,恰好是“ peter”。我们可以立即丢弃“ peter”之前的所有内容,并获取其余部分的中间元素-“
samantha”,依此类推,直到找到以“ xyz”开头的条目。

对于“%xyz”版本,我们无法执行此操作,因为任何字符串都可能在末尾匹配,因此我们需要查看每个字符串。

随着表格规模的扩大,这两种方法之间的差异会变得很大。

为字段名反向创建字段/索引的解决方案使我们可以再次使用二进制搜索技术。(在某些数据库中,实际上可以在不创建额外字段的情况下执行此操作,而是通过使用特定的索引类型,虚拟列等)。

这已大大简化-有关数据库索引的实际实现的详细信息,请查看B-Tree和B * Tree索引。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414671.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号