我想在MySQL中存储域名(例如:google.com - 没有“http://”和“www”)作为主键+索引。什么是MySQL中域存储的快速方法?
所以当我通过PHP调用一个域名时,我应该更快地根据那个域名得到结果。 现在我在纯文本中插入域。
它是正确的做法吗?或者我需要散列它?
你的想法请
我想在MySQL中存储域名(例如:google.com - 没有“http://”和“www”)作为主键+索引。什么是MySQL中域存储的快速方法?
所以当我通过PHP调用一个域名时,我应该更快地根据那个域名得到结果。 现在我在纯文本中插入域。
它是正确的做法吗?或者我需要散列它?
你的想法请
我想你不应该在主索引中使用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工作台创建。
你不应该剥离www。仅仅因为www.somedomain.com和somedomain.com指向同一个网络服务器,并不意味着它们实际上是同一个域名。从技术上讲,www是一个子域。 – 2010-07-08 06:33:43
在MySQL(也可能是所有其他RDBMS)主键也被索引,所以你不需要在主键字段上使用索引。 – 2010-07-08 06:38:00
我的意思是唯一索引。但该方法呢?这是纯文本格式还好吗?我觉得在我的数据库搜索域名寻求更多的时间..我不确定的实际原因,但从一个开始... – mathew 2010-07-08 06:41:48