从MYSQL中获取零件号数量的有效方法

时间:2017-08-04 02:18:31

标签: mysql

我有一个库存表

id | part_number
----------------
1  | R101
2  | E763
3  | H293
4  | N837
5  | Y121
6  | U837

订单商品的表格

id | order_id | quantity | price
--------------------------------
1  |   1      |   3      |  45
2  |   1      |   6      |  20
3  |   1      |   10     |  10
4  |   2      |   3      |  22
5  |   2      |   8      |  10
6  |   3      |   87     |  98

和订单商品部件号的表

id | order_items_id | inventory_id
----------------------------------
1   |     1         |      1
2   |     1         |      3
3   |     2         |      2
4   |     2         |      3
5   |     2         |      1
6   |     3         |      4
7   |     3         |      5
8   |     3         |      1
9   |     4         |      2
10  |     4         |      3
11  |     5         |      1
12  |     5         |      4
13  |     6         |      2
14  |     6         |      4
15  |     6         |      5

我有一个程序可以获得每个部件号和使用它的次数,但是一旦这些表变得非常大,它需要很长时间才能运行。我想提出一个有效的程序,可以实时返回这些信息。

part_number | number_of_times_used
----------------------------------
R101        |     27
E763        |     96
H293        |     12
N837        |     105
Y121        |     97
U837        |     0

1 个答案:

答案 0 :(得分:0)

首先从你应该拥有的东西开始。表格应适当编入索引。假设order_items_id是对order_items.id的引用而order_id是对parts.id的引用,则应该在表上有主索引 - 对于部分,对于id的主索引,对于id的order_items索引。

然后你可以在order_item_part_numbers上创建外键 - 索引order_items_part_number.order_items_id到外键order_items.id,并将order_items_part_number.inventory_id索引到外键部分.id。

在对表进行适当索引后,您的查询应该会有相当好的表现:

data-interval="5000"