MySQL - 哪一个都是更好的索引?

时间:2012-10-14 20:52:04

标签: mysql

我有一个拥有2,400万条目数据库的网站。现在我想使用mod_rewrite生成清晰的URL,例如example.com/this-is-a-beautiful-url。要识别哪个URL属于哪个页面,我想构建一个引用网站内容的URL表。比如“this-url-example”属于ID为123的帖子。 现在有2个朋友告诉我2种不同的方法来构建这个表,我不知道哪个是最好的。

  1. 建议:“创建URL的MD5哈希并将其保存在带索引的二进制字段中。”
  2. 建议:“只需将网址保存为纯文本并在其上添加索引”。
  3. 哪种方法可以提供更快的选择查询?你有其他建议吗?谢谢!

3 个答案:

答案 0 :(得分:2)

寻求妥协,让网址为 sitename.com/12345/clean-url-format

您可以在一个可读的网址中找到这两个关键字,并且您可以使用这些关键字来获取主键获取行的速度。

将没有文本部分的网址重定向到带有它的规范版本是合理的。

答案 1 :(得分:2)

MD5 Hash旨在用于数据比较。即检查密码是否有效或文件是否保持不变。

如果您计划能够更改和修改URL(用于搜索引擎优化目的),我会坚持使用纯文本。

另外,如果你想创建Mod Rewrite Commands(在HTACCESS中)文件 - 它需要是纯文本才能让你将该URL与特定页面链接。

答案 2 :(得分:0)

我不会使用mysql或md5哈希。相反,请使用键值存储,例如dbmleveldb。如果您使用的是Apache mod_rewrite,它有一个功能RewriteMap可以直接从dbm db读取键和值,或者通过调用外部程序。类型可以是sdbmgdbmndbmdbBerkeley DB),而apache包含一个程序httxt2dbm来创建数据库。如果你确实想使用MySQL,RewriteMap也可以使用dbd选项和mod_dbd。在性能方面,在MySQL上使用哈希索引应该类似于Berkley DB。