重复键更新导致高索引键

时间:2014-04-22 15:00:32

标签: php mysql sql

因此我在登录时使用ON DUPLICATE KEY UPDATE - 我在每次登录时都使用它,因为我从外部页面获取数据并且用户只能在那里更新他们的设置。这是因为该页面上的软件缺少api。

实际上我正在使用此查询来更新其设置。如果该帐户未列在我的数据库中,则会在成功时使用其凭据创建。

我的问题是,如果用户没有在我的数据库中列出并插入它们,那么他们的id(自动增量)不是1,2,3,4等等。它从32开始,然后到达54,之后是185,依此类推。 ID提升得如此之快。这是我的查询中的问题还是这实际上是一个错误?

http://puu.sh/8iXv7.png

继承我的查询

mysqli_query($database, "   INSERT INTO `benutzer` (`id`, `login`, `vorname`, `nachname`, `gruppen`, `email`, `adresse`, `telefon`, `telefon2`, `telefon3`, `bemerkungen`)
            VALUES (NULL, '".$userdata[0]."', '".$userdata[1]."', '".$userdata[2]."', '".implode(";", $gruppen)."', '".$userdata[3]."', '".$userdata[4]."', '".$userdata[5]."', '".$userdata[6]."', '".$userdata[7]."', '".$userdata[8]."')
            ON DUPLICATE KEY UPDATE `vorname` = '".$userdata[1]."', `nachname` = '".$userdata[2]."', `gruppen` = '".implode(";", $gruppen)."', `email` = '".$userdata[3]."', `adresse` = '".$userdata[4]."', `telefon` = '".$userdata[5]."', `telefon2` = '".$userdata[6]."', `telefon3` = '".$userdata[7]."', `bemerkungen` = '".$userdata[8]."'") or die(mysql_error());

这是表格的结构

CREATE TABLE IF NOT EXISTS `benutzer` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(32) NOT NULL,
`vorname` text NOT NULL,
`nachname` text NOT NULL,
`gruppen` text NOT NULL,
`email` text NOT NULL,
`adresse` text NOT NULL,
`telefon` text NOT NULL,
`telefon2` text NOT NULL,
`telefon3` text NOT NULL,
`bemerkungen` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `login` (`login`),
KEY `login_2` (`login`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=32 ;

提前致谢

1 个答案:

答案 0 :(得分:-1)

这是预期和记录的行为。 如果您不喜欢它 - 那么请不要使用错误的工具。

但是,我根本不会把它称为问题。 Id是一个抽象的标识符,持续时间高达40亿,应该足够每个人