MySQL中的数据类型选择、使用合成索引

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))

 

posted @ 2020-07-15 16:15  别看窗外的世界  阅读(171)  评论(0编辑  收藏  举报