2010-12-13 4 views
1
SELECT 
    tba.UpdatedDate AS UpdatedDate, 
    tsh.SupplierID, 
    ts.ProductCode as ProductCode, 
    sum(tba.AfterDiscount) as AfterDiscount, 
    sum(tba.Quantity) as Quantity 
FROM 
    tblstockhistory as tsh 
    left join tblstock as ts 
    on tsh.StockID=ts.StockID 
    left join tblbasket as tba 
    on ts.ProductCode=tba.ProductCode 
     and tsh.SupplierID=49 
     AND tba.Status=3 

group by 
    tba.UpdatedDate 
ORDER BY 
    Quantity DESC 

я имею поставщик таблицу, поставщик идентификатор помечена, чтобы tblstockhistory таблицы, и в этом tblstockhistory таблице содержит StockID (ссылку из tblstock таблицы), и у меня со столом содержит StockID , ProductCode, И у меня есть таблица tblbasket, в этом я поддержании ProductCode,MySQL группы по дате с кратному присоединиться

Моя идея здесь, я хочу показать THW статистики по SupplierID, когда я прохожу поставщик идентификатор, он покажет шоу, этот поставщик поставляется статистика продажи товаров,

Но вышеуказанный запрос когда-то возвращает значение null, и это занимает слишком много времени для excution, около 50 секунд,

я, что Somthing, как показано ниже сверху запроса

Date   SupplierID, Amount, Quantity 
2010-12-12  12  12200  20 
2010-12-12  40  10252  30 
2010-12-12  10  12551  50 


2010-12-13  22  1900  20 
2010-12-13  40  18652  30 
2010-12-13  85  19681  50 

2010-12-15  22  1900  20 
2010-12-15  40  18652  30 
2010-12-15  85  19681  50 
+0

Чтобы повысить производительность, убедитесь, что все поля, которые вы используете в соединениях, индексируются. – Nazariy

ответ

1

Ли tblstockhistory когда-либо существовать без stockID. Если это не так, вы можете преобразовать его в внутреннее соединение, которое может помочь.

например.

tblstockhistory as tsh 
INNER join tblstock as ts 
on tsh.StockID=ts.StockID 

Также вы можете рассмотреть возможность добавления индексов, если они в настоящее время не существуют.

По крайней мере, у меня были бы следующие индексы, поскольку они, скорее всего, будут объединены и запрошены.

  • tblstockhistory.SockID
  • tblstockhistory.SupplierID
  • tblstock.StockID
  • tblstock.ProductCode
  • tblbasket.ProductCode
  • tblBacket.Status
  • tblbasket.UpdatedDate

Наконец, если действительно важно, чтобы этот запрос быстро освещался, вы можете создавать сводные таблицы и периодически обновлять их.

+0

Для каких полей я должен создать индекс здесь – Bharanikumar

+0

StockID, требуется, becoz with stockid только мы вытаскиваем ProductCode, ProductCode, хранящийся в таблице tblbasket, – Bharanikumar

+0

Добавлены поля, которые я бы проиндексировал как минимум. Кроме того, поскольку необходимо использовать StockID, я обязательно изменил бы его на Inner Join. Вы также можете удалить ProductCode из Select, так как он не отображается на вашем образце. –

0

повторно написать группу по статье, как и попробуйте еще раз

group by 
    tba.UpdatedDate, tsh.SupplierID 

вы упомянули ProductCode в запросе, но не в «результате» вы хотели, если вы хотите отобразить ProductCode, а затем добавить его в group by или иначе удалите его из предложения select.

+0

Но это [MySQL] (http://stackoverflow.com/questions/1066453/mysql-group ий и порядок-через/1066504 # 1066504) – 2010-12-13 17:57:59

Смежные вопросы