如何使我的数据库响应时间和时间渲染时间更好?

时间:2014-11-05 22:25:41

标签: php mysql performance

我工作的公司在我们的网站上有一个内部管理方面。我注意到它的运行速度很慢,我假设它不是因为我们数据库的一面,而是我们调用它们并将它们渲染到屏幕的方式。我将列出一个我们渲染东西的过程的例子,希望有人可以告诉我我们在哪里做得很低效,以帮助加快渲染加载时间。

//Student Page:
Avg. Loading Time: 5 - 6 seconds

//table_user: 
Columns   Records
45        16,412

//table_use_course: 
Columns    Records
22         18,623

//Indexing:
Comment: We use plesk (phpmyadmin) and this is where I did the indexing.
I indexed all primary and foreign keys and it looks like this: 

enter image description here

//Query: 
SELECT a.account_id, user_id, user_first_name, user_last_name 
FROM table_user a 
INNER JOIN table_user_course b ON a.account_id = b.account_id 
WHERE user_active = 'yes' AND b.product_type_id = '1' 
ORDER BY user_first_name ASC LIMIT 0, 30


//Query Results:
Columns    Records
4          30


//How we render:
if(is_array($query_results)){
    foreach($querY_results as $student){
         $text .= $student['user_first_name'], $student['user_last_name'], etc.
    }
}

其他想法:

我们确实有一个具有相同代码和数据库结构的测试站点,数据库中的数据少得多。测试站点运行得更快,这使我想到它是如何从数据库中提取它的。另一方面,16k-18k的记录并不是那么多,我对测试站点和实际站点之间的加载时间差异感到惊讶。

非常感谢有关如何让事情更快地运行的任何帮助或建议!

2 个答案:

答案 0 :(得分:0)

在建立索引时,需要关注inner部分中使用的列...在您的情况下:

table_user.account_id
table_user_course.account_id

在两个表格中。尝试并澄清你是否已经完成

示例:

ALTER TABLE `TABLE_NAME` ADD INDEX `INDEX_NAME` (`COLUMN_NAME`) 

来源:How do I add indices to MySQL tables?

对于您的情况,请使用:

SHOW INDEX FROM [TABLE_NAME]; (For checking the indexes in your tables)

并添加(仅当它们不存在时):

ALTER TABLE `table_user` ADD INDEX `INDEX_NAME` (`account_id`);
ALTER TABLE `table_user_course` ADD INDEX `INDEX_NAME` (`account_id`);

答案 1 :(得分:0)

也许性能问题不在数据库上。使用www.xdebug.org跟踪页面执行情况,它将告知源代码中的每一行,执行时间和内存使用情况。