少し改善しようとしている長いmysqlクエリがあります。基本的に、さまざまなニュース ソースからスクレイピングされた見出しを取得し、データベース内のテレビ番組と照合します。ヘッドライン テーブル「ゲーム オブ スローンズ リニューアル」は、番組テーブルの「ゲーム オブ スローンズ」と一致する必要があります。
現在、35 秒で実行されます (あまり良くない; 遅い):
SELECT
news_feed.title,
shows.name,
shows.id,
news_feed.news_id,
news_feed.created_on
FROM news_feed
JOIN shows ON news_feed.title
RLIKE CONCAT(
'(^|[[:blank:][:punct:]])', shows.name, '($|[[:blank:][:punct:]])'
)
見たところ、見るべきnews_feed.titleの数を伝えることで改善できました。「」のようなものを追加ORDER by news_id DESC LIMIT 50
して、の前に実行するにはどうすればよいRLIKE CONCAT
ですか?
これを実行するだけで、許容できる時間実行できると思いますか? (1日に5回実行されるため、サーバー全体がクラッシュしない限り、それほど大きな問題ではありません)