ホームページ >バックエンド開発 >PHPチュートリアル >Mysql如何存储Url字符串
Url长度不一,Mysql如何存储呢?
因为我需要把url作为惟一索引来使用的,后期用来作查询,加短索引我觉的意义不大。
有没有可以把长字符串转成短字符串或数字来存储的好方法(或者其它方式也可以),还是说用Mysql存储本身就是一个错误的选择呢?
Url长度不一,Mysql如何存储呢?
因为我需要把url作为惟一索引来使用的,后期用来作查询,加短索引我觉的意义不大。
有没有可以把长字符串转成短字符串或数字来存储的好方法(或者其它方式也可以),还是说用Mysql存储本身就是一个错误的选择呢?
Url做索引本来就不应该,字符串索引一些方面如果没做好会非常的慢了,何况你还是Url。
如果你还是要Url存储并且Url很长,并且想把字符串缩短可以使用 短域名Api接口,去缩短Url
访问效果还是一样的。
<code>原网址: http://music.baidu.com/song/124380645 短网址: http://dwz.cn/Kn8Ep </code>
不管多长的Url都会被缩短成固定长度。
百度短网址(页面带有API):http://dwz.cn/
短网址处理下就好了,节省容量,不过还是建议存储短网址的同时再保存一份原网址,
你把Url字符串作为唯一索引就是个错误的方案
可以尝试维护一个key-value的表,然后将key写入你需要保证唯一的字段,字段用int或者bigint,加唯一索引
加多一个字段 url_md5 将 md5(url) 的值存入这个字段,给 url_md5 这个字段设置唯一索引。查询的时候,将要查询的 url 取 md5: select * from table_name where url_md5=URL_MD5。
这种方式需要注意的点就是,可能 url 不同,但是 md5(url) 相同,这种情况只需要再判断下数据表记录集里面的 url 和你需要的 url 是否相同即可。