簡體   English   中英

MySQL選擇查詢太慢\\

[英]MySQL Select Query Too Slow \

我有一個表,其中有90個數據字段和1500條記錄。 當我執行Select查詢並嘗試提取整個表記錄時,它變得太慢。 即使我將其限制為100條記錄,也要花費30秒以上的時間。

任何建議,將不勝感激。

查詢如下:

SELECT 
  ID, FirstName, LastName, 
  date_format( InitialConsultDate , '%m/%d/%Y' ) AS InitialConsultDate, 
  Address1, Address2, City, State, Zip, HomeNumber, WorkNumber, CellNumber, Email, 
  Height, Weight, Age, Sex, Married, BirthDate, UnderPhysicianCare, MedicalIssue, 
  Smoking, Exercise, NumberTimesPerWeek, Dieting, AdequateWater, Cellulite, 
  BiggestConcern, CustomerDeal, LipoSessionsPurchased, FacialSessionsPurchased, 
  NutritionSessionsPurchased, ReferredBy, AdditionalNotes, WeightEvaluationDate1, 
  Weight1, WeightEvaluationDate2, Weight2, WeightEvaluationDate3, Weight3, BMI, 
  ClientBeforePictureFront, ClientAfterPictureFront1, ClientAfterPictureFront2, 
  ClientBeforePictureLeftSide, ClientAfterPictureLeftSide1, ClientAfterPictureLeftSide2, 
  ClientBeforePictureRightSide, ClientAfterPictureRightSide1, 
  ClientAfterPictureRightSide2, ClientMeasurementH1, ClientMeasurementH2, 
  ClientMeasurementH3, Area1Before, Area1After, Area2Before, Area2After, 
  Area3Before, Area3After, IsOldCustomer, ClientAfterFront3, ClientAfterFront4, 
  ClientAfterFront5, ClientAfterLeftSide3, ClientAfterLeftSide4, 
  ClientAfterLeftSide5, ClientAfterRightSide3, ClientAfterRightSide4, 
  ClientAfterRightSide5, ClientBeforeBack, ClientAfterBack1, ClientAfterBack2,
  ClientAfterBack3, ClientAfterBack4, ClientAfterBack5, Area1After1, Area1After2, 
  Area1After3, Area1After4, Area1After5, Area2After1, Area2After2, Area2After3, 
  Area2After4, Area2After5, Area3After1, Area3After2, Area3After3, Area3After4, 
  Area3After5 
FROM customer 
WHERE IsOldCustomer ='0' 
ORDER BY ID

您應該使用索引來優化數據搜索,例如:

CREATE INDEX idx_name ON your_table (field_name);
CREATE UNIQUE INDEX idx_name ON your_table (field_name);
  • 將第一個用於具有重復值(例如:日期,名稱等)的字段。
  • 將第二個用於具有唯一值的字段(例如:登錄名,ID等)。

為了使您警惕,請遵循以下建議:

  1. 包含90列以上的表並不表示數據庫設計良好(盡管可能會有例外情況)。 使數據庫更加規范化。
  2. 在您的WHERE子句中存在的列上使用索引(由其他用戶建議)。 閱讀有關索引的全部信息。
  3. 盡管現在可能不成問題,但是如果您的數據量可能增加,您可能需要考慮為表創建PARTITION

當然,就目前而言,在IsOldCustomer列上創建索引可能就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM