大数据量的表是如何设计的?

php_wsd PHP高级工程师  2011-03-09 03:33:59
讨论一下:大数据量的表是如何设计的?以提高查询速度的
如:我的产品表有千万级的数据量,放在同一张表里面,现在进行一次模糊查询,要花很久的时间;不知道大家是如何解决这样的问题?
...全文
108 点赞 收藏 11
写回复
11 条回复
Atai-Lu 2011年03月11日
[Quote=引用 10 楼 falizixun2 的回复:]

引用 9 楼 luxu001207 的回复:

另外,如果分区视图你用了标识(自动编号)列的话,没法直接对分区视图使用insert/update操作,只能select


不知道你说的这些方法适合其他数据库吗。比如MYSQL,PG,ORACLE?
[/Quote]
对其它数据库没研究过这方面的问题,不过我认为,能作为大型数据库来用的数据库,应该都会有这类机制的,不然这些数据库还远远称不上大型数据库,顶多也就跟access一个级别罢了
回复 点赞
kaifadi 2011年03月10日
[Quote=引用 9 楼 luxu001207 的回复:]

另外,如果分区视图你用了标识(自动编号)列的话,没法直接对分区视图使用insert/update操作,只能select
[/Quote]

不知道你说的这些方法适合其他数据库吗。比如MYSQL,PG,ORACLE?
回复 点赞
Atai-Lu 2011年03月09日
另外,如果分区视图你用了标识(自动编号)列的话,没法直接对分区视图使用insert/update操作,只能select
回复 点赞
Atai-Lu 2011年03月09日
如果你的分区视图还让数据库查询所有表才给你返回结果,那就说明你设计的不合理

用全文索引的话,你数据更新的时候,要更新全文索引,不然的话你是搜不出来的

另外,如果你用lucenc的话,也是一样要更新索引
回复 点赞
php_wsd 2011年03月09日
还有一个地方:这些产品在页面上显示的时间按更新时间排序的,这个更新时间会变的,由客户刷新产品的时候,改变的。如果按照你这样折分表的话,那查询一次,不是所以表都查询一次,然后再输出
回复 点赞
php_wsd 2011年03月09日
对了,表中还有一种情况:一个客户可能会重复发名称相似的产品,我查询出来只能显示一条记录,这样时间就更长了,你这种方法也合适这种吗?
回复 点赞
php_wsd 2011年03月09日
谢谢楼上,我先看一下
回复 点赞
Atai-Lu 2011年03月09日
我得意的看了下我那已有550万条记录的表的查询效率:
以下是第 1261-1290 项,本次搜索共用时 62 毫秒
回复 点赞
flyerwing 2011年03月09日
[Quote=引用楼主 wangsdong 的回复:]
讨论一下:大数据量的表是如何设计的?以提高查询速度的
如:我的产品表有千万级的数据量,放在同一张表里面,现在进行一次模糊查询,要花很久的时间;不知道大家是如何解决这样的问题?
[/Quote]
建索引什么的,大虾说了,数据量不到一千都完全没必要使用微型或者小型数据库,
回复 点赞
in0512 2011年03月09日
小手一抖,一分到手
回复 点赞
Atai-Lu 2011年03月09日
首先说查询的问题:
你数据量这么大,你弄全文索引吧,要不用lucenc做搜索,如果你用like或charat查询,那肯定是慢的要死

然后说下表设计的问题:
你可以考虑使用分区视图,把一个表拆分成N个结构一样的表,通过分区视图串联起来
可以参考:http://msdn.microsoft.com/zh-cn/library/ms190019.aspx

如果还不行,你甚至可以考虑分数据库,分服务器……

回复 点赞
发动态
发帖子
ASP
创建于2007-09-28

1.9w+

社区成员

35.7w+

社区内容

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区公告
暂无公告