Mysql性能/优化帮助

Mysql性能/优化帮助,mysql,Mysql,所以这是一个非常受欢迎的小网站,现在我在下面的sql查询中遇到了很多问题 我知道我的数据库设计不是很好。我有主题和程序的文本字段,其中包含一个序列化数组,我使用像一样搜索它 下面的查询大约需要一分钟 SELECT p.*, e.institution FROM cv_personal p LEFT JOIN cv_education e ON p.id = e.user_id LEFT JOIN cv_literacy l ON p.id = l.user_id WH

所以这是一个非常受欢迎的小网站,现在我在下面的sql查询中遇到了很多问题

我知道我的数据库设计不是很好。我有
主题
程序
的文本字段,其中包含一个序列化数组,我使用
一样搜索它

下面的查询大约需要一分钟

SELECT p.*, e.institution
FROM   cv_personal p
LEFT   JOIN cv_education e
ON     p.id = e.user_id
LEFT   JOIN cv_literacy l
ON     p.id = l.user_id
WHERE  1 = 1
AND    (e.qualification LIKE '%php%' OR e.subjects LIKE '%php%' OR l.programs LIKE '%php%')
GROUP  BY p.id
ORDER  BY p.created_on DESC
多么精彩的节目啊? 我认为可以向联接添加条件以减少使用的记录数:

SELECT p.*, e.institution
FROM   cv_personal p
LEFT   JOIN cv_education e
ON     (e.qualification LIKE '%php%' OR e.subjects LIKE '%php%') AND p.id = e.user_id
LEFT   JOIN cv_literacy l
ON     l.programs LIKE '%php%' AND p.id = l.user_id
ORDER  BY p.created_on DESC

为什么使用GROUP BY?

用户可以有许多教育记录,所以我使用GROUP,这样它只检索一行。如果这有意义的话。下面是解释。您无法通过获取此组的所有教育记录,只能获取一个。您应该删除它并使用PHP显示:感谢matthecat的帮助,但是当我从语句中取出
group by
时,仍然需要大约一分钟。即使像在我的帖子中那样更改连接条件,我在外部连接中发现您的查询
交叉依赖项时也会出现以下错误:;检查您的条件
Lol。谢谢您的提问。对于那些急于告诉noob如何存储序列化数据的人来说,这是一个完美的例子。