我试图在MySQL数据库中存储大约1亿个域名,但是我无法找到在域名上使用的正确的索引方法。
问题是,类似的查询也将被执行:
SELECT id FROM domains WHERE domain LIKE '%.example.com'
或
SELECT id FROM domains WHERE domain LIKE 'example.%'
如果这样做更容易,那么‘%示例%’并不是一个要求,但最好是拥有/能够这样做是件好事。
正确的索引是什么?从左到右(例如.%)应该是直接向前的,但是从右到左(%.example.com)是有问题的,但是最常见的查询。
我在
我有一个很大的域名列表,还有一个很大的单词列表。我想看看在我的列表中有多少域名的末尾有这些单词。我尝试了2个查询,但都花费了太多的时间来执行。尝试找出是否有任何方法可以使查询速度更快。
首先我尝试了这个查询,大约需要50分钟才能返回结果:
SELECT COUNT(*) AS count
FROM table
WHERE domain_name LIKE '%my_word.%';
然后我想如果我去掉它的.%,也许它会更快,所以我试了一下,但它仍然很慢:
SELECT COUNT(*) AS count
FROM table
WHERE SUBSTRING
我想使用一个域名来查询的。我知道这是可能的,因为这个 (根据ISP域名查找SBL列表)可以做到这一点,而可以这样做,但我似乎只能让它与IP地址一起工作。我快速查看了SpamAssassin代码,但是它已经非常概括了,所以我可能会花几个小时来追踪那些真正起作用的代码。现在,我可以成功地查询SBL中的IP地址:
#returns 127.0.0.2, so 208.73.210.0 is on the blacklist
dig +short 0.210.73.208.sbl.spamhaus.org
#returns nothing, so 72.14.225.72 isn't on
我有来自laravel的日志,它显示了查询执行的绑定时间和持续时间:
select * from `yg_product_detail` where `product_id` = '5551973459553' and `yg_product_detail`.`deleted_at` is null limit 1
Metadata
Bindings 0. 55197345953
Hints Use SELECT * only if you need all columns from table
LIMIT without ORDER BY cau