谢谢童虎老师的意见,
我有以下问题想请教.
请问 锁表 是什么意思?
数据量大到什么程度才会锁表?
而且字段类型也有许多不正确的地方
比如char和varchar
char是定长的varchar是不定长的,定长表的数据表会占据更多的数据库空间,但是查询速度会比不定长的数据表要快
一般用于程序经常查询的数据表,而varchar则反之
为何我使用 ALTER TABLE cdb_nkflash CHANGE game_id game_id CHAR(15) NOT NULL ;
或是 CREATE TABLE cdb_nkflash1 ( game_id char(15) NOT NULL default '' };
再翻看 game_id , 它都是自动变了 varchar(15),
我看过 DISCUZ 2 至 4版本的 cdb_member都是有这情况,username都用了varchar,
但discuz 5 却克服了这问题, 请问是如何做到的?
还有类似这样的字段game_type char(1) NOT NULL default '1',
根本用不上char的用tinyint(1)就可以了
我之前用tinyint,他自动分配成tinyint(3),所以我就用了char(1), 空间好像比tinyint(3)小. 才这样设置.
请教一下,我想错的地方是哪几处?
其实我不明白 tinyint(1) 和 tinyint(3)的分别, 好像都是不能记录大于255的数字.
数据表索引我没有仔细看,我认为可能也会有不合理的地方,
建立索引的原则是,能去掉绝大多数的数据的字段作为第一索引,
至于那些字段作为索引是由程序中SQL语句的where决定的
我额外多建立了3个index,目的是希望排序时快一点.
程序中有3个 order by
加了index是否可以让读取快一点点? |