PHP-MYSQL查询的搜索结果性能较慢

PHP-MYSQL查询的搜索结果性能较慢,php,mysql,sql,Php,Mysql,Sql,我有一个拥有大型报告数据库的网站(300K行,1.6GB)。搜索引擎显示搜索结果的时间非常长 搜索包含3个表: 主表包含报告标题、说明和目录 第二个表列出了每份报告的业务部门(汽车、采矿、医疗等) 第三个表包含每个报告的国家代码 结果是这样的: 在大约50秒之前,现在我将数据库分成2部分以获得更快的搜索性能,现在大约需要30秒,这仍然是很多 我认为问题应该出在其中一个查询中,但我不知道错误在哪里 你能帮我看看如何优化查询吗?这真的很重要。我尝试过不同的解决方案,但没有一个有效 主表的结构:

我有一个拥有大型报告数据库的网站(300K行,1.6GB)。搜索引擎显示搜索结果的时间非常长

搜索包含3个表:

  • 主表包含报告标题、说明和目录
  • 第二个表列出了每份报告的业务部门(汽车、采矿、医疗等)
  • 第三个表包含每个报告的国家代码
结果是这样的:

在大约50秒之前,现在我将数据库分成2部分以获得更快的搜索性能,现在大约需要30秒,这仍然是很多

我认为问题应该出在其中一个查询中,但我不知道错误在哪里

你能帮我看看如何优化查询吗?这真的很重要。我尝试过不同的解决方案,但没有一个有效

主表的结构:

Field            Type         Null Key Default Extra
id               int(12)      NO   PRI NULL    auto_increment
name             varchar(220) NO   MUL NULL  
data             date         NO       NULL  
publication_date date         NO   MUL NULL  
no_pages         int(12)      NO   MUL NULL  
description      text         NO       NULL  
table_content    text         NO       NULL  
type             varchar(120) NO   MUL NULL  
price            float        NO   MUL NULL  
currency         varchar(12)  NO   MUL NULL  
status           int(12)      NO   MUL NULL  
organizer_id     int(12)      NO   MUL NULL  
pic              varchar(80)  NO       NULL  
main_sec         varchar(80)  NO       NULL  
main_reg         varchar(80)  NO       NULL
索引

Table   Non_unique Key_name         Seq_in_index Column_name      Collation Cardinality Sub_part    Packed  Null    Index_type  Comment
reports 0          PRIMARY          1            id               A         129700      NULL        NULL            BTREE    
reports 1          publication_date 1            publication_date A         712         NULL        NULL            BTREE    
reports 1          price            1            price            A         584         NULL        NULL            BTREE    
reports 1          name_2           1            name             A         129700      NULL        NULL            BTREE    
reports 1          organizer_id     1            organizer_id     A         48          NULL        NULL            BTREE    
reports 1          type             1            type             A         162         NULL        NULL            BTREE    
reports 1          status           1            status           A         4           NULL        NULL            BTREE    
reports 1          currency         1            currency         A         4           NULL        NULL            BTREE    
reports 1          no_pages         1            no_pages         A         831         NULL        NULL            BTREE    
reports 1          name             1            name             NULL      1           NULL        NULL            FULLTEXT     
代码


我建议您获取所有可疑查询,然后在数据库管理工作室(如MySQL Workbench)中执行
解释选择

通过这种方式,您将确切地看到每个查询正在做什么,并能够相应地进行调整

通过对where子句中的项使用索引,您可能能够提高性能(当然不是所有项,因为这会占用太多空间)。也不是做一个

from table1, table2

尝试加入
。如果您在数据库中执行查询时提供查询(没有php变量),这将非常有帮助,因为这可能是瓶颈。

如果您展示数据库设计和表上的索引,这将非常有帮助。此外,您还提到了您尝试过的不同解决方案。它们是什么?只是为了避免我们在它们没有产生影响的情况下建议它们。您是否尝试过将代码拆分为段,然后运行每个段?这可能会识别出有问题的查询(假设问题是查询)。请清理您的问题并仅提供相关代码以及更好/更干净的表结构。这将使人们能够更快更好地帮助您。如果您在sql性能方面遇到问题,您不需要将相关sql隐藏在一堆完全无关的php/html中。您的代码片段基本上不可读,而且似乎容易受到攻击。
from table1, table2