关于
向每个主表插入1000条记录,每个从表插入10000条记录,时间记录如下(InputData.sql):
| int类型为主键的表插入开始时间:07 19 2004 9:21PM int类型为主键的表插入结束时间:07 19 2004 9:22PM int类型为主键的表插入共用时间:21293毫秒 GUID(聚簇索引)类型为主键的表插入开始时间:07 19 2004 9:22PM GUID类型(聚簇索引)为主键的表插入结束时间:07 19 2004 9:22PM GUID类型(聚簇索引)为主键的表插入共用时间:26076毫秒 GUID(非聚簇索引)类型为主键的表插入开始时间:07 19 2004 9:22PM GUID类型(非聚簇索引)为主键的表插入结束时间:07 19 2004 9:22PM GUID类型(非聚簇索引)为主键的表插入共用时间:26096毫秒 COMB类型为主键的表插入开始时间:07 19 2004 9:22PM COMB类型为主键的表插入结束时间:07 19 2004 9:23PM COMB类型为主键的表插入共用时间:23553毫秒 |
分别执行不排序的连接检索(SelectWithoutOrder.sql):
| int类型不排序连接检索开始时间:07 19 2004 9:50PM int类型不排序连接检索结束时间:07 19 2004 9:50PM int类型不排序连接检索共用时间:100毫秒 --------------------------------------- GUID(聚簇索引)类型不排序连接检索开始时间:07 19 2004 9:50PM GUID(聚簇索引)类型不排序连接检索结束时间:07 19 2004 9:50PM GUID(聚簇索引)类型不排序连接检索共用时间:140毫秒 --------------------------------------- GUID(非聚簇索引)类型不排序连接检索开始时间:07 19 2004 9:50PM GUID(非聚簇索引)类型不排序连接检索结束时间:07 19 2004 9:50PM GUID(非聚簇索引)类型不排序连接检索共用时间:153毫秒 --------------------------------------- COMB类型不排序连接检索开始时间:07 19 2004 9:50PM COMB类型不排序连接检索结束时间:07 19 2004 9:50PM COMB类型不排序连接检索共用时间:150毫秒 |
执行排序的连接检索(SelectWithOrder.sql):
| int类型排序连接检索开始时间:07 19 2004 9:49PM int类型排序连接检索结束时间:07 19 2004 9:49PM int类型排序连接检索共用时间:110毫秒 --------------------------------------- GUID(聚簇索引)类型排序连接检索开始时间:07 19 2004 9:49PM GUID(聚簇索引)类型排序连接检索结束时间:07 19 2004 9:49PM GUID(聚簇索引)类型排序连接检索共用时间:160毫秒 --------------------------------------- GUID(非聚簇索引)类型排序连接检索开始时间:07 19 2004 9:49PM GUID(非聚簇索引)类型排序连接检索结束时间:07 19 2004 9:49PM GUID(非聚簇索引)类型排序连接检索共用时间:160毫秒 --------------------------------------- COMB类型排序连接检索开始时间:07 19 2004 9:49PM COMB类型排序连接检索结束时间:07 19 2004 9:49PM COMB类型排序连接检索共用时间:140毫秒 |
看来,COMB比GUID快,但仍然比不上INT类型。其实INT占用空间小,IO效率也会高一些。现在我得修正《小议数据库主键选取策略》中的数据了。原文中的数据显得有些太夸张了。