压缩是在数据库的数据块级别上进行的。当确定一个表要被压缩后,数据库便在每一个数据库数据块中保留空间,以便储存在该数据块中的多个位置上出现的数据的单一拷贝。这一被保留的空间被称作符号表(symbol table)。被标识为要进行压缩的数据只存储在该符号表中,而不是在数据库行本身内。当在一个数据库行中出现被标识为要压缩的数据时,该行在该符号表中存储一个指向相关数据的指针,而不是数据本身。节约空间是通过删除表中数据值的冗余拷贝而实现的。当一张表的行数据上有大量重复数据压缩表会提高表数据查询效率
实验:
对一张有11534338的数据表student 创建一张临时压缩表(停用原表的索引),然后打开查询计划,发现从临时表查询时读取的内存中的数据和硬盘上的数据都比从student中读的少
alter index U_NAME_INDEX unusable(停用);alter index U_NAME_INDEX rebuild;(启用)