在sybase-select查询中对表进行分区

时间:2014-07-04 09:09:53

标签: c++ performance sybase sybase-ase query-performance

我主要担心:

我有一个包含大量数据的现有表。它有一个聚簇索引。 我的c ++进程有一个包含许多键的列表,用于检查表中是否存在键, 如果是,它将检查表中的行,新行类似。如果有更改,则在表中更新新行。 一般来说,变化会更少。但其表中的巨大数据。 这意味着会有很多选择查询,但没有很多更新查询。

我想要实现的目标:

我刚刚阅读了有关在sybase here中对表进行分区的内容。 我只是想知道这对我有用,因为我在文章中读到它只提到插入查询。但是如何才能提高我的选择查询性能。

有人可以建议我在这种情况下应该寻找什么?

1 个答案:

答案 0 :(得分:0)

是的,只要您的查询基于定义的分区键,它就会提高您的查询(读取)性能。 Indexes can also be partitioned并且理所当然,较小的索引意味着更快的读取性能。

例如,如果您有select * from contacts where lastName = 'Smith'之类的查询,并且您已根据lastName的第一个字母对表索引进行了分区,那么服务器只需要搜索一个分区" S"检索其结果。

请注意,如果您有许多不同的查询配置文件,则可能难以对数据进行分区。不包括索引分区键(例如lastName)的查询(例如select * from staff where created > [some_date])将必须命中每个索引分区以便检索它的结果集。

没有人可以告诉您应该/不应该做什么,因为它非常特定于应用程序,您必须执行自己的分析。在介入分区之前,我的建议是确保您拥有正确的索引,它们被您的查询所击中(即没有表扫描),并且您的服务器资源适当(即获得足够的快速磁盘和RAM),并且您调整了服务器缓存以满足您的查询。