首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • sql语句中"like"与"="的执行速度在同样条件下,哪个更快? [无满意答案结贴,结贴人:czj067]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • czj067
    • 等级:
    发表于:2008-07-25 16:27:06 楼主
    如题
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 16:30:321楼 得分:0
    对sql的查询不了解
    个人认为是=比较快
    如果那个字段有索引的话可能会按照index来查询
    而like的话就要一个个的去匹配
    相对就慢了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 16:31:442楼 得分:0
    应该是 =
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sunrobust
    • 等级:
    发表于:2008-07-25 16:31:473楼 得分:0
    like是完全匹配的时候是一样的

    如果是%关键字% 这种,那显然是=快

    不过like能干的事情, =不能干, 例子同上
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 16:34:194楼 得分:0
    能用=的请用=
    like 只有在不确定的时候再用 like '% %'
    搜索的方式不同,=的效率好的多
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 16:47:325楼 得分:0
    如果该字段有索引的话,= 和like 'xxx%'这样的效率差不多。

    如果是没有索引的话,都是全表扫描。 但是 = 还是比like 快。

    全匹配和相似匹配,肯定是全匹配快。

    另: 如果加了索引, 记得用 like 'xxx %' 左匹配,才能在sqlserver 中用到索引。

    like '%xxx%' 和 like '%xxx' 其实都已经是全表扫描了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 16:55:436楼 得分:0
    = 快
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 16:58:427楼 得分:0
    like就慢多了,尤其是%xxxx%的时候
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 17:01:058楼 得分:0
    当然是=快
    但是这两个关键字又不能互换
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • czj067
    • 等级:
    发表于:2008-07-25 17:18:279楼 得分:0
    回:caicai_45:

    like '%xxx%' 和 like '%xxx' ,如果此字段也有索引,也不能提高效率吗?
    是不是索引对like语句只有左匹配才有效啊?

    谢谢!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 17:29:0210楼 得分:0
    =快
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bwangel
    • 等级:
    发表于:2008-07-25 17:40:1411楼 得分:0
    两者完全不是相等功能的操作,完全没有可比性。

    就好比用电脑进行人像识别和用电脑进行身份证识别的差别一样巨大。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 18:12:1412楼 得分:0
    引用 10 楼 billclinton8 的回复:
    =快
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 18:40:0113楼 得分:0
    用full text index 结合contains函数才是真正模糊查询。

    原因:
    1. contains使用sql server内建查询引擎,效率远高于like. sql server 2005更为每一个数据库实例(instance)单独建立独享本文索引引擎。
    2. contains支持全字段搜索如 contains(YourTable.*, '"123*"');
    3. contains结合参数支持查找任意时态的单词如good, better, best, 只需注明查good.
    ....
    ....

    所以,性能功能上,contains模糊查询是正道。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 21:02:0314楼 得分:0
    只要走索引就快,如果like '%1233%'这种方式不走索引,所以慢。
    如果是like '1233%' 那么就具备了走索引的前提。

    使用= 可以直接对字段设置索引就可以了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 21:26:2915楼 得分:0
    两者的用途不一样
    查询条件不相同
    不要比较!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 21:42:3316楼 得分:0
    该用那个就用哪个
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • exy337
    • 等级:
    发表于:2008-07-25 21:56:5617楼 得分:0
    做程序有时就是要决定用那个好.虽然可能有点武断.
    =好.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 21:58:3518楼 得分:0
    =速度快,like是模糊匹配,而=是等值匹配。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 21:59:0319楼 得分:0
    like 和 = 是用在不同的环境的.
    如果硬要比的话,个人感觉=快
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 22:16:0420楼 得分:0
    学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 22:38:0621楼 得分:0
    这要看数据量 多大
    小量 like 和= 相差不多。
    如海量的数据就有区别,

    like会检索全表的 所以肯定慢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • czj067
    • 等级:
    发表于:2008-07-25 23:16:1622楼 得分:0
    明白些了,多谢各位!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • coolhty
    • 等级:
    发表于:2008-07-25 23:53:5423楼 得分:0
    我相信,能用=的时候没人会去like
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bwangel
    • 等级:
    发表于:2008-07-26 00:21:3324楼 得分:0
    看样子你要完全明白了才会有满意结贴哟?!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved