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