gpt4 book ai didi

mysql - mysql大表numeric类型的快速搜索解决方案?

转载 作者:行者123 更新时间:2023-11-29 03:08:27 24 4
gpt4 key购买 nike

我有大型 mysql 数据库(500 万行),数据是电话号码。我尝试了很多解决方案,但它仍然很慢。现在,我正在使用 INT 类型和 LIKE sql 查询 来存储和搜索电话号码。例如:SELECT phonenumber FROM tbl_phone WHERE phonenumber LIKE '%4567'用于搜索电话号码,例如 170**4567**、249**4567**、...

我需要一个让它运行得更快的解决方案。请帮助我!

最佳答案

您将数字存储为 INT,但随后以 CHAR 进行查询(LIKE 运算符将 INT 隐式转换为 CHAR),这肯定不是最佳选择。如果您想将数字保留为 INT(可能是 IO 性能热力学中最好的想法),您最好将查询更改为使用数字比较:

-- instead of CHAR operators 
WHERE phone_number LIKE '%4567'
WHERE phone_number LIKE '1234%'
-- use NUMERIC operators
WHERE phone_number % 10000 = 4567
WHERE phone_number >= 12340000 -- considering 8 digit numbers

除了选择一种同构的方式来存储和查询数据外,您还应该记住创建适当的索引 CREATE INDEX IDX0 ON table (phone_number);

不幸的是,即使这样,您的查询也可能不是最佳的,因为类似于@ron 评论的效果。在这种情况下,您可能必须调整您的表以将该列分解为更易于管理的列(如 national_code、area_code 和 phone_number)。例如,这将允许通过区号进行索引高效查询。

关于mysql - mysql大表numeric类型的快速搜索解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11887897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com