python - 进行基本搜索的推荐方法

标签 python mysql sql django search

我需要搜索视频的标题。搜索只会在一个表的一列中搜索,因此这是一个非常基本的搜索。这是我目前用来进行搜索的内容:

video_set = video_set.filter(title__icontains=search)

并使用print connection.queries,它变成了这样——

SELECT COUNT(*) FROM `userprofile_videoinfo` WHERE `userprofile_videoinfo`.`title` LIKE %search% 

我对搜索和 SQL 非常陌生,似乎使用 '%like%' 是总是不鼓励的一件事。我正在搜索大约 10,000 条记录,想知道此搜索是否足以满足如此小的记录大小,或者我是否需要寻找其他搜索选项。如果 10,000 条记录太小而无法产生影响,那么我需要在什么大小/什么时候考虑其他选项?我可以寻找哪些选项来获得更高性能的基本文本搜索?谢谢。

最佳答案

人们告诉您避免执行“%blah%”之类的操作的原因是因为在进行此类搜索时很难使用索引。这意味着,如果您没有任何其他过滤器,则必须执行全表扫描并检查每条记录以查看它是否与您的查询匹配,而不是使用索引。对于 10,000 条记录,不会对性能造成重大影响。如果您有 10 倍或 100 倍的行数,那么您会开始注意到速度变慢。全文搜索对于 10,000 行来说似乎有点大材小用。还有其他问题需要考虑,例如您可能需要研究的大小写和声音特征(因为人们经常拼错单词:))

关于python - 进行基本搜索的推荐方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6512966/

相关文章:

python - 用于平滑零区域的 Numpy 过滤器

Python 子进程 : how to use pipes thrice?

mysql - 将模型分解为 sql 表问题

sql - 为什么这个 Groovy MetaClass 语句可以与 Sql 类一起使用?

python - 如何使用内容编码 : gzip with Python SimpleHTTPServer

python - 不区分大小写的 Python 字符串 split() 方法

sql - DB设计问题: Tree (one table) vs. 两个表用于推文和转发?

php - 如何在mysql中按季度对日期进行分组并在php中检索

php - 数据表 |如何做自己的选择?

mysql - 如何从具有一个值的表中删除一行,而该表包含具有不同值的第二行?