2013-09-25 58 views
0

好的,我做了這個looooooong查詢。它工作完美的buuuuut需要15-30秒給我的結果...我不是一個SQL專家,所以我想問問是否有一種方法來提高MySQL的響應時間...也許這樣做超過1查詢或類似的東西。用大查詢改善mysql響應時間

PS:它是一個BIG數據庫,包含大公司的所有財務信息。

PS2:我使用php連接到mysql。

SELECT 
    aplicaciones.importe, facturas.cliente, facturas.porcenRUC, 
    facturas.porcenTB, facturas.codcmp, facturas.prefijo, facturas.numero, 
    clientes.vendedor, comisiones.ruc, comisiones.trb, recibos.prefijo as prefijoR, 
    recibos.numero as numeroR 
FROM recibos, aplicaciones, facturas, clientes, comisiones 
WHERE 
    (recibos.fechaAcrMax BETWEEN STR_TO_DATE('$dd', '%d/%m/%Y') AND 
    STR_TO_DATE('$hh', '%d/%m/%Y')) AND recibos.base = aplicaciones.base AND 
    recibos.identificador = aplicaciones.identificador AND 
    recibos.base = facturas.base AND 
    aplicaciones.aplica_a_identificador = facturas.identificador AND 
    facturas.cliente = comisiones.cliente AND 
    facturas.cliente = clientes.cliente 
ORDER BY clientes.vendedor ASC 
+2

你有什麼樣的指標對這些表?這有助於大型查詢的速度。此外,您應該使用連接語法,JOIN TABLE2 ON TABLE2.ID = TABLE1.ID – Vulcronos

+0

查詢使用隱式內部連接...我沒有表我只是有一個視圖,但我確信它有適當的指標。 –

+0

你想檢查索引。這不是一個超級複雜的查詢,因此大部分工作都在where子句中,並將結果從數據庫傳回您的機器。 – Vulcronos

回答

2

第一步是查看是否可以添加索引。再次運行您的查詢,但在開始時使用「EXPLAIN」,結果應該可以幫助您確定正在使用的索引以及可以添加或應該添加的索引。

mysql的網站上的文檔應該有所幫助:http://dev.mysql.com/doc/refman/5.0/en/using-explain.html

上的索引文檔可以在這裏找到:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

+0

我嘗試使用EXPLAIN,但是:#1345 - 無法發佈EXPLAIN/SHOW;缺乏底層表|||的特權這是因爲我只是看到真正的桌子...... –