海量新手,非常感谢任何帮助。
我有一个 mysql 数据库,其中包含大约 30,000 个条目,每个条目都有一个指向 .jpg 格式的缩略图的链接。
我试图弄清楚是否有任何方法可以通过 mysql 数据库并验证每个链接是否仍然有效 - 也就是 .jpg 文件是否在它应该在的位置?
所以每个条目都有一个 id、name、thumb(这是一个 url)。
谢谢!
SELECT * from table_name where SUBSTRING(url, -3, 3) = 'jpg';
对于链接,执行查询以获取所有链接,例如:
SELECT DISTINCT url FROM your_stuff;
你没有提到你的数据库的确切性质,但类似的东西应该可以工作。
然后循环遍历它,并为每一个使用 cURL 之类的东西来执行 HEAD 请求 - 这比通常的 GET 请求更好,因为它是相同的,除了服务器不应该返回实际文件,所以你不必下载每个图像只是为了看看它们是否在那里。只需执行 HEAD 请求,并确认服务器以状态 200 响应。
考虑到您的问题中的这一行:“每个都带有指向 .jpg 格式的缩略图的链接。”
您也可以尝试regexp
: 结尾.jpg
SELECT DISTINCT url_column as regex_u, id
FROM your_table
where url_column regexp '\(.jpg)$';
即使有like
:contains
jpg
SELECT DISTINCT url_column as like_u, id
FROM your_table
where url_column like '%.jpg%';
另一个带有instr:
SELECT DISTINCT url_column as instr_u , id
FROM your_table
where instr(url_column, '.jpg') > 0;
如果你想匹配一个整体ulr
SELECT DISTINCT url_column as url_u, id
FROM your_table
where url_column regexp '^(https?://|www\\.)[\.A-Za-z0-9/_\-]+\\.(jpg)$'
;
另一个使用Right
:
SELECT DISTINCT url_column as right_u, id
FROM your_table
where Right(url_column,4) = '.jpg';
请检查explain plan
最有效的解决方案。LIKE
似乎需要的时间最长。