日期:2014-05-16  浏览次数:20534 次

数据库索引优化
创建索引字段(C_CompanyName--公司名称,字段长度在10-16之间)
100万条数据
完全索引:
数据 52,406.9 KB
索引 58,214.0 KB
总计 108.0 MB

10位索引:
数据 52,406.9 KB
索引 43,402.0 KB
总计 95,808.9 KB

08位索引:
数据 52,406.9 KB
索引 36,906.0 KB
总计 89,312.9 KB

10位索引对于8位索引的索引大小增长14.967%
(434020-369060)/434020=14.967%
完全索引对于10位索引的索引大小增长25.444%
(582140-434020)/582140=25.444%
完全索引对于8位索引的索引大小增长36.603%
(582140-369060)/582140=36.603%

以下是查询时间(毫秒):
查询命中的:
100条数据 第一次、二、三、四、、、、、、
完全索引查询总时间:840 710 720 710 691 720
10位索引查询总时间:901 131 141 121 190 180
08位索引查询总时间:1021 150 110 160 140 111

400条数据
完全索引查询总时间:1471 1019 1059 1120 1203 1048 1187 1180
10位索引查询总时间:3033 547 518 469 472 625 418 471
08位索引查询总时间:2752 573 623 567 449 575 549 540

500条数据
完全索引查询总时间:1532 1232 1281 1190 1301 --->
10位索引查询总时间:2885 670 661 673 710 ----->
08位索引查询总时间:3360 690 730 806 621 ------->
  ---> 1151 1281 1220 1280 1260 1270
  -----> 700 654 641 641 711 641
  -------> 761 650 731 691 690 701
  
600条数据
完全索引查询总时间:1713 1381 1351 1440 1291 --->
10位索引查询总时间:3682 761 852 720 841 ----->
08位索引查询总时间:3011 751 830 823 801 ------->
  ---> 1371 1381 1422 1290 1412 1401
  -----> 740 811 861 851 790 822
  -------> 800 871 720 832 811 720
  
800条数据
完全索引查询总时间:2023 1652 1652 1641 1561 --->
10位索引查询总时间:4042 1090 901 1071 801 ----->
08位索引查询总时间:3453 971 1160 1090 951 ------->
  ---> 1662 1621 1772 1662 1631 1620
  -----> 951 1141 1040 960 980 1050
  -------> 1110 1001 881 1101 1092 1033


1000条数据
完全索引查询总时间:2413 1841 1961 1883 1871 --->
10位索引查询总时间:3564 1353 1321 1210 1272 ----->
08位索引查询总时间:4102 1080 1211 1301 1201 ------->
  ---> 1800 1931 1983 1831 1802 1893
  -----> 1190 1271 1110 1252 1201 1340
  -------> 1414 1212 1261 1331 1331 1241
  

命中查询使用的数据是连续的一片数据,并没有使用零碎分散的数据。这样只会影响第一次查询,使用零碎数据首次查询的时间会远大于使用连续数据首次查询的时间。不过接下来的查询就差不多。

零碎查询
100条数据
6324 733 729 732 744
7616 149 148 174 153
6369 144 134 146 147

500 条数据
19509 1279 1267 1248 1242 1248
18462 673 671 665 651 691
20771 684 679 672 678 664
  
查询不命中的数据:
数据
完全索引查询总时间: 4895 753 766 750 757 778
10位索引查询总时间: 3046 147 156 140 138 146
08位索引查询总时间: 4134 149 133 135 142 133


对于查询命中速度:8位索引和10位索引查询速度相差不大。差不多一样,而相比于完全索引的查询速度,大概增长了40%左右。
对于查询不命中速度:初次查询都差不多,而接下来的查询,10位索引和8位索引的查询速度明显快于完全索引的查询速度。
从数据上看,对于数据库创建索引,只要该字段的前多少位能满足我们的查询需求,这样适当的控制建立索引字段的位数能提高查询速度,同时也能减少索引文件的大小。