2015-10-15 130 views
0

我們正在研究一個私人論壇解決方案,我們必須具有「上崗」的表:[PHP-PDO是什麼讓我的查詢速度變慢?

  1. 1指數(主鍵)
  2. 唯一鍵(各職位即塞/ SEO網站網址)
  3. 2外鍵(爲參照類別(ID),用於柱的柱的類別和OP和用戶(ID)。

現在,ID(主鍵),類別(ID)和用戶( ID)都是INT(11)UNSIGNED,我們已經使用了以下內容,我們在0.2XX秒內得到結果(在PHP pa上GE):

  • 使用PHP PDO
  • 使用PHP-庫MySQLi
  • 使用PHP PDO與持久性連接和緩衝查詢

查詢:兩個給幾乎相同的性能(在0.17-範圍0.2XX秒)

  1. 從post,category,user中選擇行,其中post.userid = user.id和post.categoryid = category.id和post.id = 1; - >結果平均爲0.17秒到0.28秒
  2. SELECT er FROM post INNER JOIN category on post.categoryid = category.id INNER JOIN user on post.userid = user.id - >標籤出價比之前更快但是仍然是較慢的部分。

現在,當我們使用的MyBB或PHPBB,作爲測試的一部分,這些東西加載所有查詢,包括選擇課程,更新該行並在0.2秒內插入。這些軟件究竟在幹什麼?

我們使用了PDO連接,準備,然後爲MySQLi綁定execute.same。

作爲一個前進的步驟,我在一個視圖中創建了所有3個表格中所有必要列的視圖,但是這同樣給出了相同的性能。

我在做什麼錯,一個查詢佔用0.18-0.2XX秒,而一個完整的頁面顯示得更快(超過1 select + update + select)。

案例:MyBB的/ PHPBB和定製的論壇都使用同一臺機器上使用相同的PHP,MySQL的配置,只有2個用戶simulataneously訪問該站點(使用2級不同的瀏覽器1個用戶)

回答

0

我是什麼做錯了

您正在看錯方向。您採取的每項措施都與查詢性能無關。

您需要做的是研究給定查詢的EXPLAIN輸出,並相應地設置索引,以使這些查詢對所涉及的所有表使用索引。

+0

嗨,你建議什麼索引?我正在查看錶,並且所有表都有一個默認的BTREE INDEX,它恰好是主鍵,並且post表有4個索引即所有主鍵,唯一鍵和外鍵。 – CyberWizard