当我们为访客检测这些项目时:
这些是否应该在单独的列中存储在数据库中,还是应该将它们全部存储为用户代理字符串,然后在应用程序中将其分解?
我应该使用varchar(255)
这样做是为了安全吗还是这些项目有明确定义的数据类型?我使用MySQL和PHP
答案 0 :(得分:2)
这实际上取决于您想要对信息做些什么。如果您计划将数据用于非常详细的统计信息,请使用单独的列,以便您可以运行详细查询,例如“为具有Internet Explorer 6的用户显示所有屏幕分辨率”等。
如果您不希望需要这样详细的统计信息,那么将用户代理字符串存储在一个字段中通常可以正常工作。
答案 1 :(得分:2)
您应该将每个项目存储在自己的列中。这样您就可以轻松查询和汇总数据。
在插入时解析一次很便宜。解析每个查询都非常昂贵。
答案 2 :(得分:1)
这些项目没有已定义的数据类型,因此您可以使用varchar(255)
甚至更小的数据类型。最好将这些值添加到单独的字段中的数据库中,因为它对性能没有明显的影响+插入只执行一次,读取次数,所以为什么不分割一次,写入,而不是每次读取? :)