Php Mysql查询选择需要很多时间

Php Mysql查询选择需要很多时间,php,mysql,sql,laravel,Php,Mysql,Sql,Laravel,我在Laravel有一个站点,它执行以下SQL查询,并将它们组合起来需要1.8秒。执行时间取自探查器工具栏 675.81ms SELECT definitions.*, terms.term, GROUP_CONCAT(DISTINCT(tags.name) SEPARATOR ",") AS tags FROM definitions INNER JOIN terms ON terms.id = definitions.term_id LEFT JOIN definition_tag

我在Laravel有一个站点,它执行以下SQL查询,并将它们组合起来需要1.8秒。执行时间取自探查器工具栏

675.81ms    
SELECT definitions.*, terms.term, GROUP_CONCAT(DISTINCT(tags.name) SEPARATOR ",") AS tags FROM definitions INNER JOIN terms ON terms.id = definitions.term_id LEFT JOIN definition_tag ON definitions.id = definition_tag.definition_id LEFT JOIN tags ON tags.id = definition_tag.tag_id WHERE approved = 1 GROUP BY definitions.id ORDER BY id ASC LIMIT 2
0.21ms  
SELECT * FROM `settings` WHERE `name` = 'no_homepage_random' LIMIT 1
636.11ms    
SELECT definitions.*, terms.term, GROUP_CONCAT(DISTINCT(tags.name) SEPARATOR ",") AS tags FROM definitions INNER JOIN terms ON terms.id = definitions.term_id LEFT JOIN definition_tag ON definitions.id = definition_tag.definition_id LEFT JOIN tags ON tags.id = definition_tag.tag_id WHERE approved = 1 GROUP BY definitions.id ORDER BY RAND() LIMIT 1
628.68ms    
SELECT definitions.*, terms.term, GROUP_CONCAT(DISTINCT(tags.name) SEPARATOR ",") AS tags FROM definitions INNER JOIN terms ON terms.id = definitions.term_id LEFT JOIN definition_tag ON definitions.id = definition_tag.definition_id LEFT JOIN tags ON tags.id = definition_tag.tag_id WHERE approved = 1 GROUP BY definitions.id ORDER BY id DESC LIMIT 3
一般来说,我想加快sql查询的速度,但我也有点困惑,为什么只需要0.0049 seg就可以在phpmyadmin中运行相同的查询。网站是在一个共享托管。
我能做些什么来改进呢?

可能是由于内部和左侧连接命令导致您的请求花费了大量时间:在其中一个表中:定义、术语、定义标记和标记字段中存在冗余,使用内部和左侧连接将使您的请求花费大量时间。

-如果您的数据库没有索引,随着数据库越来越大,查询速度往往会越来越慢


-还要看看您是如何查询的。确保在查询完成之前没有太多的循环或操作。

这是一个常规问题吗?@JonasStaudenmeir是的,执行总是很慢。定义表大约有2000行。是否在phpMyAdmin中多次测试查询?它们总是(很多)快吗?在PHP中,您是否包括处理结果所用的时间?请快速注意,检查apache日志是否有延迟。