2015-09-03 25 views
0

請耐心等待...我將盡力以最佳方式解釋這一點。MySQL INDEX當前數據庫表

我有一張表格,其中包含少於50,000條記錄,用於跟蹤各種貨件的運動。

爲每件貨物分配一個跟蹤號碼。

然後,每件貨物都會在達到某個特定點時經歷一系列「工作流程」。單個貨件可以經過的工作流程略超過10個。根據具體情況,某些工作流程可能會被忽略,但每一批貨物都會有一個開始工作流程和一個結束工作流程。

該表用於跟蹤每件貨物在不同工作流程中的移動情況,從而節省工作流程的歷史記錄。據說,這個表格將在每個工作流程中移動時保存相同貨件的10多條記錄。

它們可能看起來像重複,但它們不是因爲工作流和日期戳會有所不同。

現在,當用戶運行搜索來自特定區域的特定出貨組時,查詢需要很長時間才能恢復記錄。當我說'這麼久'時,我的意思是它可能需要30秒到一分鐘。

主鍵設置爲跟蹤編號,託運人名稱,交貨地點,但不是工作流程。

我知道這不是多大的工作,但最重要的是,我將如何去索引這樣的表?

我想添加表格的視圖,但我無法弄清楚如何在這裏顯示它。

如果您要求,我會編輯頁面。

請讓我知道。

預先感謝您。

+0

完整的當前表格模式將會有幫助...但您可能想查看一個複合索引 – AJefferiss

+1

您想要根據您如何搜索表格來應用索引。你能提供一些關於如何查詢或使用連接的例子嗎? –

+1

評估您的查詢執行計劃以幫助確定問題的根源。 50K行不是很多數據,但是你的連接,缺乏索引和可能的表掃描可能是你的問題的根源。檢出https://dev.mysql。com/doc/refman/5.5/en/execution-plan-information.html –

回答

0

有一點需要注意的文檔是你已經有主鍵索引 - 見Is the primary key automatically indexed in MySQL?

它可能會更快有一個指標只是爲搜索的列。有一點需要注意的是,您不能像所述的那樣爲該數據提供唯一的索引。

+1

您是指搜索索引?這是同樣的事情運行查詢? –

+1

索引和查詢是分開的。索引是根據數據更改更新的永久結構,查詢是暫時的。亞辛的答案中的文章看起來是一個合理的解讀。如果您創建的索引包含標準查詢中的所有列,那麼在大多數情況下該查詢將得到改進 –