海量效率??

xq1981 2010-07-29 02:16:33
我的一个数据表有1000万条数据,有传统方式遍历全表需要耗时:127秒,单独查询数据也很慢(比如:select * from T_test where name='小明' 其中name非索引列),请教一下大侠们,如何提高效率,不敢奢求代码,说说思路即可????
...全文
141 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lfzwenzhu 2010-08-05
  • 打赏
  • 举报
回复
你的数据量不是很大,这么慢不应该的。是不是硬件问题。
1。建立索引
2。显示写出需要的字段,不要使用*。
shu97wei 2010-08-02
  • 打赏
  • 举报
回复
千万不要用select * ,要把所有的字段名字写出来,这样效率可以提高不少
  • 打赏
  • 举报
回复
如果你的name全部保存的是汉字,最好换一个字段。
索引要找个字段做聚集索引,否则只有非聚集是起不到好的效果的。
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xq1981 的回复:]

因为建立索引也提高不了多少效率?1000W条数据啊!
[/Quote]
怎么可能呢,你建立索引就知道效率提高多少了。
no7dw 2010-07-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xq1981 的回复:]

3楼能否稍稍说细一点???
[/Quote]
首先我觉得你的问题应该可以描述得更详细1点,大家才好帮你出主意。是一句查询就127秒还是存储过程搞了127秒,还是多句查询导致这么久。

要看你的where 里面怎么筛选,是否是多表联合查询?
where 里面的条件都设索引,(假如条件不是太多,而你有不太在乎插入更新的速度的话 )

至于水平分区,csdn里面有很多帖子,你找找吧,
粗略的的从外表看来,就是实现 把1000W条数据,合理的划分成几个表,每个表的数据含较少数据,以提高查询速度。(高手请拍砖)

我觉得估计你是多表查询吧,单表的话很少这么久,除非你筛选的条件重复性很高,譬如gender='男'

如果是多表,尝试一下改变表结构(如果允许的话),进行冗余存储,

另外,如果你查处来的数据是不是都是你想要的,如果只是筛选1部分,做个分页吧。

ps:最好把问题重新描述(详细地)1下。因为提高效率的可工作的地方太多了

zhaojianmi1 2010-07-29
  • 打赏
  • 举报
回复
对于where条件里的字段建立索引;
根据某个字段进行表分区(hash分区、范围分区,看情况而定),将分区放到不同的存储设备上;
建立MDC表;
预先调入内存,避免磁盘IO。。。
Mr_Nice 2010-07-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 xq1981 的回复:]
我的一个数据表有1000万条数据,有传统方式遍历全表需要耗时:127秒,单独查询数据也很慢(比如:select * from T_test where name='小明' 其中name非索引列),请教一下大侠们,如何提高效率,不敢奢求代码,说说思路即可????
[/Quote]

还得看你说的这个查找瓶颈在哪儿? I/O ? 还是缓存?
有了这个信息,才好说哪儿应该调整...
claro 2010-07-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xq1981 的回复:]
因为建立索引也提高不了多少效率?1000W条数据啊!
[/Quote]建全文索引。
xq1981 2010-07-29
  • 打赏
  • 举报
回复
3楼能否稍稍说细一点???
no7dw 2010-07-29
  • 打赏
  • 举报
回复
愚见:
先索引吧
再不行尝试水平分表~
xq1981 2010-07-29
  • 打赏
  • 举报
回复
因为建立索引也提高不了多少效率?1000W条数据啊!
Angel1201 2010-07-29
  • 打赏
  • 举报
回复
其中name非索引列
既然非索引列
那就建立索引看看

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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