SQL内部联接:数据库被卡住
几天前我发了这个问题,但我没有确切解释我想要什么。 我再次提出一个更为明确的问题: 为了澄清我的问题,我添加了一些新信息: 我有一个MyISAM表的MySQL数据库。两个相关表格为:SQL内部联接:数据库被卡住,sql,mysql,join,myisam,Sql,Mysql,Join,Myisam,几天前我发了这个问题,但我没有确切解释我想要什么。 我再次提出一个更为明确的问题: 为了澄清我的问题,我添加了一些新信息: 我有一个MyISAM表的MySQL数据库。两个相关表格为: * orders_products: orders_products_id, orders_id, product_id, product_name, product_price, product_name, product_model, final_price, ... * products: products_
* orders_products: orders_products_id, orders_id, product_id, product_name, product_price, product_name, product_model, final_price, ...
* products: products_id, manufacturers_id, ...
(有关表格的完整信息,请参阅屏幕截图产品()和屏幕截图订单\产品())
现在我想要的是:-获取所有订购制造商id=1的产品的订单。以及该订单产品的产品名称(制造商id=1)。按顺序分组
到目前为止,我所做的是:
SELECT
op.orders_id,
p.products_id,
op.products_name,
op.products_price,
op.products_quantity
FROM orders_products op , products p
INNER JOIN products
ON op.products_id = p.products_id
WHERE p.manufacturers_id = 1 AND
p.orders_id > 10000
p、 订单id>10000,用于测试,仅获得几个订单id。但是,如果这个查询能够正常工作,那么执行它需要很多时间。sql server有两次死机。错在哪里 如果没有任何索引,则select可能会生成许多表扫描 这可能是因为你得到了一个非常大的结果集,这可能会填满临时区域,这可以解释为什么会卡住
SELECT
op.orders_id,
p.products_id,
op.products_name,
op.products_price,
op.products_quantity
FROM orders_products op
INNER JOIN products p
ON op.products_id = p.products_id
WHERE p.manufacturers_id = 1 AND
p.orders_id > 10000
products表中既有隐式连接,也有显式连接(请注意,不要再使用隐式连接语法,这是一种非常糟糕的编程实践),看代码,我怀疑您得到的是交叉连接。对于不了解该工具的任何人来说,小小的彩色菱形毫无意义。确切的DDL语句最好显示出来。非常感谢。就这样