【问题标题】:MySQL compare query performanceMySQL比较查询性能
【发布时间】:2021-07-07 12:04:39
【问题描述】:

我在 MySQL 中有一个这样的表:

startIp endIp city countryCode latitude longitude
16777216 16777471 Los Angeles US 34.0522 -118.244
16777472 16778239 Fuzhou CN 26.0614 119.306
16778240 16779263 Melbourne AU -37.814 144.963

还有 270 万个条目。

现在我有一个转换后的 IP 地址,例如 16777566。
这应该返回“福州,CN,26.0614, 119.306”

现在我使用这个查询: SELECT * FROM kombiniert WHERE startIp < 16777566 AND endIp > 16777566
它工作得很好,但速度很慢。

性能:

无限制:SELECT * FROM kombiniert WHERE startIp < 2264918979 AND endIp > 2264918979; 平均(2300 毫秒)
有限制:SELECT * FROM kombiniert WHERE startIp < 2264918979 AND endIp > 2264918979 LIMIT 1; 平均(1500 毫秒)
无限制索引:SELECT * FROM kombiniert WHERE startIp < 2264918979 AND endIp > 2264918979; 平均(5300 毫秒)
索引限制:SELECT * FROM kombiniert WHERE startIp < 2264918979 AND endIp > 2264918979 LIMIT 1; 平均(5500 毫秒)


现在我想加快这个查询!我为什么要这样做?
非常感谢!


编辑:我忘了提:字段 startIp、endIp 是 bigint!
EDIT2:建表sql:

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";

CREATE TABLE `kombiniert` (<br>
  `id` int(11) NOT NULL,<br>
  `startIp` bigint(20) NOT NULL,<br>
  `endIp` bigint(20) NOT NULL,<br>
  `city` text NOT NULL,<br>
  `countryCode` varchar(4) NOT NULL,<br>
  `latitude` float NOT NULL,<br>
  `longitude` float NOT NULL<br>
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;<br>
<br>
ALTER TABLE `kombiniert`<br>
  ADD PRIMARY KEY (`id`),<br>
  ADD KEY `startIp` (`startIp`),<br>
  ADD KEY `endIp` (`endIp`);<br>
<br>
ALTER TABLE `kombiniert`<br>
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2747683;<br>
COMMIT;<br>

【问题讨论】:

  • Indexed without LIMIT 什么索引?提供表结构作为完整的 CREATE TABLE 脚本。 PS。为什么要严格不等式?
  • 请同时发布查询计划。

标签: mysql performance delay


【解决方案1】:

搜索 IP 地址(或任何其他划分为存储桶的指标)效率不高。或者至少使用明显的代码效率不高。您可以获得的最佳平均性能是扫描表格的四分之一以查找您要查找的内容。那就是“订单(N)”。

对于大多数操作,您可以获得“Order(1)”性能,但它需要对表和查询进行重组。见http://mysql.rjweb.org/doc.php/ipranges

【讨论】:

  • 感谢您的提示!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
  • 2013-03-17
相关资源
最近更新 更多