2011-04-18 111 views
0

我正在爲在線銷售圖書的客戶開發非常舊的數據庫。我們有15000條記錄用於篩選,在不同的表格中引用 - 該網站查詢所有15k行(使用經典ASP,argh),確實運行得非常慢。MySQL查詢 - 別名和記錄計數

我現在使用JOIN查詢將參考表連接到我們要顯示的記錄,並且一次使用LIMIT和OFFSET查詢100行 - 所有操作都快得多。

兩件事情我想做的事:

  • 我加入這兩個表有哪些是需要得到進一步的書籍信息相同的列名(的BookID)。我知道你可以使用別名,但是當我們獲得關於每個標題的很多細節時,我寧願只將ID作爲別名,其他所有內容都可以保留。這可能嗎?

  • 因爲我們現在限制我們的查詢次數爲100次,所以我們看不到有多少條總記錄。有沒有辦法做到這一點,而不打開第二個連接,並再次放慢網站...?

+0

第二需要試試mysql的SQL_CALC_FOUND_ROWS特性 – jimy 2011-04-18 10:58:30

回答

0

MySQL有一個這樣FOUND_ROWS()的一起選擇使用SQL_CALC_FOUND_ROWS(see here),這將有助於在尋找總記錄,因此您的分頁功能結果...

至於你的查詢,如果兩個表具有相同的列名稱然後將它們作爲tab1.ID和tab2.ID引用 - 如果它們是外鍵並因此應該是相同的值,那麼您只需要其中的一個 - 在這種情況下,tab1.BookID作爲BookID將更適合。

0

只是想知道,表索引?我曾與SQL Server,DB2,MySQL和MS Access合作。我從來沒有看到在編制索引時只有150,000條記錄的速度很慢。

用mysql你應該運行帶有「DESC」或「EXPLAIN」前綴的有問題的查詢來查看它搜索的行數以及索引是否被使用。