我不知道是什麼類型(組,整數,時間,CHAR,VARCHAR,文本,...)我應該使用這些數據:我應該在MySQL中使用哪些類型的數據?
- IP
- 個人信息
- 數據和時間
- 標題
- 名(或姓)
- 用戶代理
- 論壇答案(或意見)
- 電子郵件地址
- 國家
- 密碼
- 自定義會話cookie
我不知道是什麼類型(組,整數,時間,CHAR,VARCHAR,文本,...)我應該使用這些數據:我應該在MySQL中使用哪些類型的數據?
這還挺有趣的問題,但我會回答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)更高效和更快。
如果您的標題最大限度地節省空間,是的。另一方面,在客戶端軟件中查看並不實際,甚至範圍查找可能會更慢。 – AndreKR
客戶端應通過函數INET_NTOA()進行選擇,並查看正確的輸出IP。範圍查找速度更快,爲什麼它會更慢?例如:如果您從哪個國家搜索IP,這是最佳解決方案。 http://www.ip2location.com/擁有INT值的數據庫。 –
沒有我知道的客戶端(例如,phpMyAdmin,MySQL Workbench,Navicat,HeidiSQL)可以在查看錶格時執行此操作。對於慢速查找,我想到的東西像'WHERE INET_NTOA(col)LIKE「192.168。%。255」',現在我明白了,我沒有說清楚。 – AndreKR
這取決於你的個人品味/你的公司的規範一點,但我會用:
什麼是對downvoting的原因是什麼?有時如果我們的程序員更經常問這類問題,我會很高興。 – AndreKR