数据库分区函数(sql server 2008)

时间:2009-11-02 07:10:48

标签: sql sql-server database-design sql-server-2008 partitioning

HI,   我想在sql server 2008中为我的车队管理系统编写分区。 我想编写一个分区函数,使得 - 例如mh-30-q-126,mh-30-a-126,mh-12-fc-126的值(车辆编号)应该移动到相应的分区, 取决于中间值,如q,a,fc

我的试用功能: -

CREATE PARTITION FUNCTION [partition](varchar(20))
 AS RANGE RIGHT  
FOR VALUES ('%a%', '%G%', '%Z%')  

此函数将所有(每个值)数据移动到分区4。

 CREATE PARTITION FUNCTION [partition](varchar(20))
 AS RANGE RIGHT 
FOR VALUES ('a', 'G', 'Z')   

这个分区不满足我的意思,我想对中间的值进行排序eg.mh-30-q-126 ..我希望将值“q”移动到相应的分区,,, 请告诉我如何编写此功能

1 个答案:

答案 0 :(得分:1)

你不能直接因为PARTITION的工作原理

“boundary_value”是一个常量,你不能使用LIKE。

我所能建议的是一个计算列,它可以提取您想要的值并对其进行分区。 但是,您可能具有不适合一致解析的值。

mh-30-q-126
mh-30-a-126
mh-12-fc-126

注意:我没试过这个。我通常会在日期或类似的事情上进行分区。

但是,除非我真的需要,否则我也不会进行分区,例如1亿行+因为分区中隐含的开销。你需要分区吗?