2010-07-08 24 views
1

我想在MySQL中存储域名(例如:google.com - 没有“http://”和“www”)作为主键+索引。什么是MySQL中域存储的快速方法?

所以当我通过PHP调用一个域名时,我应该更快地根据那个域名得到结果。 现在我在纯文本中插入域。

它是正确的做法吗?或者我需要散列它?

你的想法请

+4

你不应该剥离www。仅仅因为www.somedomain.com和somedomain.com指向同一个网络服务器,并不意味着它们实际上是同一个域名。从技术上讲,www是一个子域。 – 2010-07-08 06:33:43

+0

在MySQL(也可能是所有其他RDBMS)主键也被索引,所以你不需要在主键字段上使用索引。 – 2010-07-08 06:38:00

+0

我的意思是唯一索引。但该方法呢?这是纯文本格式还好吗?我觉得在我的数据库搜索域名寻求更多的时间..我不确定的实际原因,但从一个开始... – mathew 2010-07-08 06:41:48

回答

2

我想你不应该在主索引中使用char/varchar。而是创建一个具有唯一约束的int PK和domain列。

我认为这将适用于你的情况。

结帐这里的一些原因:

CHAR() or VARCHAR() as primary key in an ISAM mySQL table?

http://forums.mysql.com/read.php?153,243809,243818#msg-243818


编辑

下面是示例表。我根据假设创建了这张表。根据您的需要更改它。

CREATE TABLE IF NOT EXISTS `test`.`sample` (

    `id` INT NOT NULL AUTO_INCREMENT , 

    `domains` VARCHAR(100) NOT NULL , 

    PRIMARY KEY (`id`) , 

    UNIQUE INDEX `domains_UNIQUE` (`domains` ASC)); 

P.S.使用mysql工作台创建。

+0

你能起草一个样本表?我不是很熟悉MySQL – mathew 2010-07-08 07:00:46

+0

@mathew - 结帐更新了答案。 – Krunal 2010-07-08 07:31:20

+0

非常感谢?一个问题,为什么domains_UNIQUE ??你已经提到过作为UNIQUE INDEX – mathew 2010-07-08 07:49:40

相关问题