1
1
尽可能的收集数据是指在不增加用户操作指令的前提下尽可能的收集一些相关信息。比如各种时间、浏览页面的轨迹等等。我甚至怀疑以后某些应用会收集用户击键频率这样的信息,然后利用它来检测账号是否被盗。
此外,我觉得应该尽量在插入/修改/删除数据的时候多做一些事情,相对来说,这些操作不那么频繁,而且单次操作的数据量也更小。不要将压力都留给查询语句。例如,如果你的程序中需要使用类似SELECT *, SUM(`point`) AS `total_point` FROM `table` GROUP BY `user_id`的语句的话,不妨考虑为这个表增加一个total_point字段。
如果某个字段,或一组字段会出现在一个会被频繁调用的where子句中,那么它们应该是被索引的,这样会更快的得到结果。同时,唯一索引的用途前面提到了,恰当的使用它们,避免意外的发生。我个人不推荐使用全文索引,尤其对于汉字来说,全文索引的开销太大了,我宁可选择搜索引擎提供的站内搜索功能。虽然搜索引擎的收录不是很及时,但是我觉得也不是不能接受。
哦,事务处理其实是程序中要做的事情,多条数据操作语句应该放入事务处理中,我们需要随时注意保证数据的完整。触发器和存储过程可以减少程序中的sql语句数量,同时减少了程序与数据库之间通讯带来的损耗。
特别是触发器,它能极大的帮助我们,本站的数据库设计中就使用了它,例如你发表回复或删除回复的时候会触发一个更新文档回复数量的操作。不过由于MySQL数据库中级联操作无法使触发器触发的怪癖可能需要你做更多的处理才能让触发器顺利工作。
请认真而仔细的设计你的数据库,并且使表名称和字段名称都易于理解并避免混淆。例如,代表删除状态的字段最好命名为trashed表示已删除,而不是trash,明显的,当你看到值为1的时候前者你能明白这表示已经删除了,而对于后者你恐怕就拿不准了。
喜欢点赞
谢谢