【问题标题】:How to improve MySQL query execution time如何提高 MySQL 查询执行时间
【发布时间】:2015-04-28 18:02:59
【问题描述】:

我遇到了一个问题,即我的查询需要大约 14 秒才能执行,我需要它更快。

有什么办法可以优化吗?

SELECT *
FROM large_table
WHERE (
INET_ATON( 'record number' )
BETWEEN INET_ATON( starting_number )
AND INET_ATON( ending_number )
)
LIMIT 0 , 30

【问题讨论】:

标签: mysql


【解决方案1】:

谢谢你们!我已经对 Alex 链接进行了研究,这是一个很好的解决方案,但我无法将整数添加到我的所有 400 万个 IP 地址记录中,因为这很耗时。 我已经用http://php.net/explode 解决了我的具体问题,我只是分解IP 地址,然后删除最后一个数字并在基于varchar 的列上搜索,我的查询在不到一秒的时间内得到结果。我目前正在使用这个解决方案。谢谢大家

【讨论】:

    【解决方案2】:

    即使用作标准/过滤器的列被索引,由于 INET_ATON() 函数,它仍然会导致表的全扫描。试试这个。

        SELECT INET_ATON(`record number`)
        FROM large_table
        WHERE 
        'record number' 
        BETWEEN starting_number 
        AND ending_number 
        LIMIT 0 , 30
    

    【讨论】:

      猜你喜欢
      • 2015-10-18
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2017-02-26
      • 2011-10-08
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多