2011-11-25 126 views
0

我不知道是什么类型(组,整数,时间,CHAR,VARCHAR,文本,...)我应该使用这些数据:我应该在MySQL中使用哪些类型的数据?

  • IP
  • 个人信息
  • 数据和时间
  • 标题
  • 名(或姓)
  • 用户代理
  • 论坛答案(或意见)
  • 电子邮件地址
  • 国家
  • 密码
  • 自定义会话cookie
+0

什么是对downvoting的原因是什么?有时如果我们的程序员更经常问这类问题,我会很高兴。 – AndreKR

回答

1

这还挺有趣的问题,但我会回答IP地址。

您可以将IP地址存储在INT UNSIGNED中。

mysql> SELECT INET_ATON('192.168.0.10') AS ipn; 

mysql> SELECT INET_NTOA(3232235530) AS ipa; 

因此,您可以在一个INT UNSIGNED(4字节)中存储IP地址,这当然比CHAR(15)更高效和更快。

+0

如果您的标题最大限度地节省空间,是的。另一方面,在客户端软件中查看并不实际,甚至范围查找可能会更慢。 – AndreKR

+0

客户端应通过函数INET_NTOA()进行选择,并查看正确的输出IP。范围查找速度更快,为什么它会更慢?例如:如果您从哪个国家搜索IP,这是最佳解决方案。 http://www.ip2location.com/拥有INT值的数据库。 –

+1

没有我知道的客户端(例如,phpMyAdmin,MySQL Workbench,Navicat,HeidiSQL)可以在查看表格时执行此操作。对于慢速查找,我想到的东西像'WHERE INET_NTOA(col)LIKE“192.168。%。255”',现在我明白了,我没有说清楚。 – AndreKR

4

这取决于你的个人品味/你的公司的规范一点,但我会用:

  • IP: CHAR(15)
  • 个人信息: TEXT
  • 日期和时间: DATETIME
  • 标题: VARCHAR(255)
  • 名(或姓): VARCHAR(255)
  • 的user-agent: VARCHAR(255)
  • 论坛答案(或意见): TEXT
  • 电子邮件地址: VARCHAR( 255)
  • 国家: CHAR(2)
  • 密码: VARCHAR(255)
  • 自定义会话cookie: VARCHAR(255)
+0

为什么没有BLOB? phpBB在一些地方使用BLOB。 – ilhan

+0

因为您列出的所有情况都是人类可读的文字,将受益于字符集转换。这是BLOB和TEXT之间的区别:TEXT将从客户端的连接字符集转换而来。 – AndreKR

+0

密码至少应该是MD5()编码,因此是CHAR(32)。 –

相关问题