我已经进行了sql查询来比较数据
SELECT
title
FROM
links_forum
WHERE
title REGEXP '[[:<:]]The grey[[:>:]].*[[:<:]](cam|ts|divx|mkv|xvid|dvd|dvdr|dvdrip|brrip|br2dvd|r5|r6|x264|ts2dvd|dvd5|dvd9|720p|1080p)[[:>:]]';
现在需要150秒才能超越
有更快的方法吗?
答案 0 :(得分:1)
使用REGEXP
匹配运算符在title
列上使用索引扫描搜索失败,以查找您的内容。您仍然可以从title
上的索引中获得一些好处,因为您只检索了一列,所以如果您还没有这样做,请尝试一下。
REGEXP也不是最快的文本匹配算法。您可以从尝试
中获益 SELECT title
FROM links_forum
WHERE title LIKE '%The grey%'
AND title REGEXP (your big regular expression)
这仍将无法使用任何索引,但它会更快地搜索title
列,因为我认为这是您搜索字词中最重要的部分。 LIKE
比REGEXP
快一点。
另一个选择:您可以考虑在其中创建一个包含视频媒体标题的单独表格,而不是搜索大量文本以查找视频媒体。
具体来说,您可以创建一个links_forum_media_title表,其中包含links_forum_id和title列。然后,当您将条目插入links_forum
时,您还将在此特定表中插入条目。然后,您可以在该表上创建(title,links_forum_id)索引,并使用它来查找您的标题。这是一个编程改变。但它最终将解决您的性能问题。如果您计划扩展此应用程序,那就很好。
您可以尝试FULLTEXT搜索。但是对于这种寻找某种媒体格式代码(cam,ts,divx)的应用程序来说,这并不是很好。
答案 1 :(得分:0)
我相信这个查询可能只是稍微优化一下。也许你需要的是优化你的数据库,并有一些其他的方法来知道给定的条目是否是指定的任何类型。例如,添加一些字段,说明给定的条目是视频还是类似的东西。