我一直在問這兩個基本MySQL的面試問題:MySQL的面試問題的行數和慢查詢
1) - 如何獲得的行數爲表 答: SELECT COUNT和訪問值模式表
採訪者:還有一種方法,它是什麼? 我:我不知道
2) - 你有一個查詢,很長一段時間工作得很好,然後突然開始到 慢,你應該怎麼做? 回答,使用說明
面試官:還有什麼? 我:我不知道
那麼這些答案是什麼,因爲我主要是開發人員而不是mysql管理員。
我一直在問這兩個基本MySQL的面試問題:MySQL的面試問題的行數和慢查詢
1) - 如何獲得的行數爲表 答: SELECT COUNT和訪問值模式表
採訪者:還有一種方法,它是什麼? 我:我不知道
2) - 你有一個查詢,很長一段時間工作得很好,然後突然開始到 慢,你應該怎麼做? 回答,使用說明
面試官:還有什麼? 我:我不知道
那麼這些答案是什麼,因爲我主要是開發人員而不是mysql管理員。
關於第一個問題,所有想到的都是使用SQL_CALC_FOUND_ROWS。
例如,你可以這樣做: SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 20;
該查詢後,你可以得到總的行數與選擇: SELECT FOUND_ROWS();
現在,這通常不是快則COUNT(*)選擇,如果你想使用分頁,並且需要總行數以及當前頁面的結果,這很方便。
第二個問題,我想知道他們是否希望你看看mysql服務器的活動。通常情況下,如果以前的查詢速度突然變慢,可能會導致大量插入或刪除活動發生。
謝謝你digaph你的答案。關於第二個問題,面試官確認這不是mysql服務器管理主題,但它是一個軟件開發人員問題,他確認相同的查詢沒有任何修改您的腳本,所以沒有插入或刪除,只是閱讀查詢。他還確認你作爲開發人員進行了所有優化。 – daliaessam
好吧,我很好奇他們在那之後是什麼。如果你確定你的查詢使用了所有正確的索引,並且數據庫沒有因爲插入或刪除而被鎖定,那麼我也不知道。 –
鄧諾,但讓我們知道,當你找到 – Strawberry