PHP-MYSQL查询的搜索结果性能较慢
我有一个拥有大型报告数据库的网站(300K行,1.6GB)。搜索引擎显示搜索结果的时间非常长 搜索包含3个表:PHP-MYSQL查询的搜索结果性能较慢,php,mysql,sql,Php,Mysql,Sql,我有一个拥有大型报告数据库的网站(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