如何使用连接优化mysql表中的大量数据

时间:2014-03-19 21:06:40

标签: performance query-optimization inner-join

也许使用JOIN不是这里的最佳选择,但是这里是场景:

我有两张桌子,一张是房子,另一张是房子里的物品。

我有50个房子和8000个物品。

最后,每个对象将是黑色或白色(布尔值)。

每个物体必须与每个房子相关联,每个物体必须是黑色或白色,这意味着,通过我目前的设计,将有400,000条记录(8,000个,8,000个一直到50个)对象表!不是最好的优化。当我试图在我的网页上加载查询时,我的网站变成了老年蜗牛吸烟大麻。它死了。

我对房子的表格如下:

==============================
House| Other cols | Other cols
==============================
1    |            |
2    |            | 
3    |            |
4    |            | 
to 50

我对象的表格如下所示:

============================
House_ID | Object | Color
============================    
1        | 1      | 1
1        | 2      | 1
1        | 3      | 0
1        | 4      | 1
1        | 5      | 0

" House_ID"一次增加到2"对象"达到8,000。这种递增持续到House_ID达到50。

必须有一种更好的方法来创建房屋和对象之间的关联,其中每个对象必须具有特定的房屋ID,并且在服务器上并不那么费力。

BTW,我使用INNER JOIN来组合两个表。我认为这可能是错的,但不知道解决方法。在phpMyAdmin中执行SQL查询。

我如何加入或设置我的表格/查询以使其不那么麻烦?

1 个答案:

答案 0 :(得分:0)

您可能需要调查索引表格。对于你正在做的事情,这实际上是一个相当小的数据集。

如果您的表名是房屋和物品,请尝试:

CREATE INDEX houses_index ON houses (House)

CREATE INDEX house_objects_index ON objects (HouseID,Object)

如果我认为索引尚不存在,这将使您的查询运行得更快。

(您可能还希望保持表格之间的列名一致;在一个表中调用字段House而在另一个表中调用HouseID,我认为,比在两个地方调用HouseID更令人困惑。)