下列两种查询哪种快?

mumuanka 2010-08-12 10:09:43
设sql-sever数据库

表如下
table1
varchar 前缀
varchar 类型
varchar 编号
varchar 后缀
varchar value

更具"前缀+类型+编号+后缀"可以确定所要查询的行,每行唯一.

问如果4项条件都确定的情况下是"where 前缀='...' and 类型='...' and 编号='...' and 后缀='...' "快
还是,再加个字段记录"前缀+类型+编号+后缀",然后对这个字段进行where快?
...全文
87 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
guguda2008 2010-08-12
  • 打赏
  • 举报
回复
最好把几种建索引的方式都测一下,实际速度和开销才是硬道理。
guguda2008 2010-08-12
  • 打赏
  • 举报
回复
第一种,建议只在选择性高的列,如编号上加索引,可以考虑把其它条件值作为包含性列添加到索引中。
第二种,如果搜索条件是固定的字段个数时可以考虑,如果WHERE后的条件数不固定时,最好还是用第一种。
mumuanka 2010-08-12
  • 打赏
  • 举报
回复
是我没说清楚,是在都可以建立索引的情况下.
问有没有建立"搜索添加合计"字段的必要性?
请考虑假设"前缀10种,类型20种,编号50种,后缀50种"
而如果建立"搜索添加合计"字段的话为10*20*50*50=500000种
考虑所提升的速度和所需资源的平衡...
fengyun142415 2010-08-12
  • 打赏
  • 举报
回复
应该是后一个快
中国风 2010-08-12
  • 打赏
  • 举报
回复
"where 前缀='...' and 类型='...' and 编号='...' and 后缀='...' 支持這一种
任何一列有索引時都可以用到,最好使用覆蓋索引

第二种用到 + ,這樣的情況下,是用不到索引的,除非用一個計算列,在計算列建索引
Mr_Nice 2010-08-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 orchidcat 的回复:]

再加个字段记录"前缀+类型+编号+后缀" 建索引,快...
[/Quote]

参考http://technet.microsoft.com/zh-cn/library/ms189292(SQL.90).aspx
华夏小卒 2010-08-12
  • 打赏
  • 举报
回复
应该后面一个好吧

Mr_Nice 2010-08-12
  • 打赏
  • 举报
回复
再加个字段记录"前缀+类型+编号+后缀" 建索引,快...

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧