У меня есть программное обеспечение для производства с более чем 50 КБ на таблицу. Он медленно выполняет поиск вставки и значения. В таблице уже есть индекс. Мой Ram - 14 ГБ и процессор Xenon.
Если я innodb_buffer_poll_size
3G или больше из файла my.ini, то mysql неожиданно остановится. Будет проблема. Что я могу сделать сейчас?
Установленная 32-разрядная версия mysql.I приложила некоторый снимок таблиц и объяснила. Я думаю, вам будет легко обнаружить мою проблему. Expalin cut_inventory стол sewing_effi стол sewing_output таблица sid_cutting_inventory таблица
* Время хранения столбцов Challan_Receive_SSD и Challan_Close_SSD * Время хранения столбца Challan_Receive_SST и Challan_Close_SST
Не используйте интерфейс mysql_ *!
SELECT Line
FROM sewing_effi
WHERE DT='$dt'
ORDER BY Line ASC"
Каков тип данных DT
? (Пожалуйста, предоставьте SHOW CREATE TABLE
)
Предполагая, что DT
- DATE
, вам необходим INDEX(DT, Line)
для дополнительной эффективности.
За это:
SELECT buyer.Buyer,ordr.ordr,ordr.Ship_Date,colour.Colour,sewing_effi.OP,
sewing_effi.HEL,sewing_effi.Target,sewing_effi.TWH,sewing_effi.Line,
sid_cutting_inventory.DT,
SUM(cutting_inventory.qc_pass) AS Input,
SUM(sewing_output.QC_Pass) AS Toutput, SUM(sewing_output.Recieved) AS Recv
FROM cutting_inventory
INNER JOIN sid_cutting_inventory
ON cutting_inventory.SID=sid_cutting_inventory.SID
LEFT JOIN buyer ON cutting_inventory.Buyer=buyer.CBuyer
LEFT JOIN ordr ON cutting_inventory.Buyer=ordr.CBuyer
AND cutting_inventory.Ordr=ordr.COrdr
INNER JOIN colour ON cutting_inventory.Buyer=colour.CBuyer
AND cutting_inventory.Ordr=colour.COrdr
AND cutting_inventory.Colour=colour.CColour
LEFT JOIN sewing_output ON sewing_output.Barcode=cutting_inventory.Barcode
JOIN sewing_effi ON sewing_effi.Line=sid_cutting_inventory.Line
WHERE sewing_effi.Line ='$li'
AND sewing_effi.DT='$dt'
AND ordr.Ship_Status='0'
AND sid_cutting_inventory.Challan_Close_SS='0'
AND sid_cutting_inventory.DT NOT BETWEEN '2017-01-31 7:00:00'
AND '2018-03-31 23:00:00'
GROUP BY sewing_effi.Line, buyer.Buyer, ordr.ordr,colour.Colour
ORDER BY sewing_effi.Line"
)
Мне сложно смешивать LEFT JOIN
и INNER JOIN
. Пожалуйста, предоставьте EXPLAIN SELECT...
Я сделаю некоторые догадки.
sewing_effi: INDEX(Line, DT) -- in either order
sid_cutting_inventory: INDEX(Challan_Close_SS, DT) -- in this order
У вас установлена 32-разрядная или 64-разрядная версия MySQL?