我必须在数据库中存储数百万个URL,并能够快速通过URL查找行.
MySQL的字符串索引不够快,因为它们只索引字符串的前4个字符,这通常是www.
,然后MySQL迭代每个行开头www.
并将值与我搜索的URL进行比较.
MongoDB不允许您自定义为字符串索引的字符数,并且文档不是很详细,所以我不认为MongoDB是合适的.
Google App Engine有一种特殊的网址类型,很棒,但我不能使用GAE.
有什么建议?
MySQL的字符串索引不够快,因为它们只索引字符串的前4个字符,通常是www.然后MySQL迭代每个以www开头的行.并将该值与我搜索的URL进行比较.
这不是真的.MySQL
可以索引多达1000
字节MyISAM
和767
字节InnoDB
.
如果您只需要URL
字符串的字符匹配,请为其哈希值编制索引.
这将使您的索引大小保持较低(16
如果您使用类似的东西,每个键的字节数MD5
),键值将均匀分布.