1. char 和 varchar 保存少量字符串
char 固定长度的字符类型,varchar 可变长度的字符类型,在MyISAM和MEMORY中推荐char , 在InnoDB中推荐varchar
2. text 和 blob 保存较大的文本
text 只能保存字符数据,而BLOB能用来保存二进制数据(图片等)
optimize table t;
在InnoDB 引擎中,optimize语句被自动转换为recreate+analyze语句。
可以使用合成索引(Synthetic)来提高大文本字段(BLOB或TEXT)的查询性能,
合成索引就是根据大文本字段的内容建立一个散列值,并把这个值存储在单独的数据列中,接下来就可以通过检索散列值快速找到数据,值得注意的是,这种技术只能用于精确匹配的的查询。数值型散列值可以高效率的存储。
CREATE TABLE t9 (id VARCHAR(100),context BLOB,hash_value VARCHAR(40))
CREATE INDEX idx_hash_value ON t9 (hash_value)
INSERT INTO t9 VALUES(1,REPEAT('beijing',2),MD5(context)) INSERT INTO t9 VALUES(2,REPEAT('beijing',2),MD5(context)) INSERT INTO t9 VALUES(3,REPEAT('beijing 2008',2),MD5(context))
SELECT * FROM t9 WHERE hash_value=MD5(REPEAT('beijing 2008',2))