当前位置: 首页 > 知识库问答 >
问题:

MySQL查询显示重复的结果并花费太多时间

公良俊楚
2023-03-14

目前,我正在开发一个社交媒体网站,用户可以像Facebook一样发布任何内容。现在我已经开发了一个从数据库过滤帖子的高级搜索。例如,数据库中有40,000个条目,我想通过高级搜索过滤行。例如,如果我搜索网站,它会显示正确的条目,但如果我搜索图像或视频,它会重复结果。

我只有40,000行,但在结果中显示了2,51,905个条目。这是我的疑问

SELECT p.id, p.userid, p.description as des, p.likes,
p.comments, p.views, p.post_id, p.created_on, u.name, u.user_name,
u.user_image, p.is_pin
FROM posts p, users u
WHERE p.is_deleted = 0
AND u.is_deleted = 0
and p.userid = u.id
and p.post_text LIKE '%image%' OR p.file_type LIKE '%image%' OR p.post_id LIKE '%image%' OR p.filename LIKE '%image%'

我在等你的回应。谢谢.

共有2个答案

丌官翰采
2023-03-14

您缺少适当的join子句,例如(假设您的用户表使用名为```D```的列来标识每个用户):

...FROM posts as p JOIN users as u ON p.userid = u.id...

当前,您正在进行交叉连接,这就是为什么您会得到这么多结果的原因。请参阅so上的这个答案。

对于不同连接类型的简单介绍&如何使用它们,请参阅。https://www.sql-join.com/sql-join-types。

胡桐
2023-03-14

查询中的条件应包装在圆括号内,否则将返回所有结果,而不考虑查询中的其他条件。

and (p.post_text LIKE '%image%'
       OR p.file_type LIKE '%image%'
       OR p.post_id LIKE '%image%'
       OR p.filename LIKE '%image%'
)
 类似资料:
  • 问题内容: SQL: 用户索引: 个人资料索引 解释 : 上面的查询大约需要0.1221 我怎样才能使其运行更快? 问题答案: 我删除了此查询,因此搜索完成后不会显示总结果数。 似乎是临时解决方案,甚至是永久解决方案。

  • 我收集了300万份文件,索引如下: {ts:1},{u\u id:1} 请注意,这是两个单独的升序索引,而不是复合索引。 当我运行此查询时: db.collection.find({u_id:'user'})。排序({ts:-1})。跳过(0)。限制(1) 需要100毫秒。我有以下日志: 2017-04-15T06:42:01.147 0000 I命令[conn783]查询。集合查询:{order

  • 问题内容: 我有一个数据库表看起来像这样 当我运行此查询时,应该不显示任何行,因为不存在具有value的行: SELECT * FROM tableName WHERE ID =‘101foo2’ 我得到的结果具有相同的ID,但没有单词 如果我的查询是如何显示具有ID的行 问题答案: 您正在混合类型。 是一个整数(或数字)。您正在将其与字符串进行比较。因此,MySQL需要确定用于比较的类型。使用什

  • 当我在MySQL Workbench中查询一个表时,没有显示任何结果,结果部分只是空白,没有网格或任何东西。然而,如果我导出数据,它就在那里。直到几天前,一切都很顺利。 查询设置: 最大长度=65536 没有查询工作,一个例子将是

  • 问题内容: 我有一本书得很长。我使用setText()方法在JTextArea中显示它。它冻结了UI,并花费大量时间。我该如何解决? 这是SSCCE: 问题答案: 在与构造GUI分开的单独线程中创建DefaultStyledDocument似乎是创建巨大文本区域的最快方法。DefaultStyledDocument是线程安全的。 这是我用来测试DefaultStyledDocument的代码。我用

  • 我正在我的SQL中使用一个查询。首先我用 我该怎么做才能让它快过2秒