我想检查一个IP是否存在于数据库中,因为它是generated.My代码,但是执行下面的50,000函数需要整整6秒。我使用PHP7 (MySQL 5.7.11),但我将在生产中使用mariadb。
如何修改sql以使其执行得更快
function ip_exist ($db,$ipv6_address) {
$db->query("SELECT ipv6 FROM tbl_ipv6 WHERE ipv6 = inet6_aton(:ip) LIMIT 1");
$db->bind(':ip', $ipv6_address);
$db->single();
if ($db->rowCount() > 0) {
return true;
}
return false;
}SQL
CREATE TABLE `tbl_ipv6` (
`ipv6` varbinary(16) NOT NULL,
`email_id` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `tbl_ipv6`
ADD PRIMARY KEY (`ipv6`);表中行号:4
更新2查询如下(谢谢Bernd Buffen)
$db->query("SELECT ipv6 FROM tbl_ipv6 WHERE ipv6 = inet6_aton(:ip)");发布于 2016-05-20 09:45:38
在该列上创建一个索引:
ALTER TABLE tbl_ipv6
ADD KEY (ipv6);现在再试一下:
如果ips是唯一的,您可以设置键唯一。
https://stackoverflow.com/questions/37343151
复制相似问题