gpt4 book ai didi

mysql - MySQL TableView 添加索引的方法

转载 作者:行者123 更新时间:2023-11-29 15:54:26 25 4
gpt4 key购买 nike

我遇到数据库性能问题,因为构建的查询中有太多联接。我主动创建了一个表格 View ,以便过程变得比以前更快,代码如下

CREATE VIEW dashboard_sales AS (
SELECT o.order_id,
o.order_date,
o.order_status,
o.order_gender,
o.order_birth_date,
op.op_status,
op.op_payment_code,
oi.oi_qty,
op.op_total,
oi.item_id,
i.item_name,
dc.dc_id,
dc.dc_name,
dc.dc_sales,
c.id_city,
c.name_city,
pc.pc_caption
FROM `order` o
LEFT JOIN order_items oi
ON o.order_id = oi.order_id
LEFT JOIN order_payment op
ON o.order_id = op.order_id
LEFT JOIN item i
ON oi.item_id = i.item_id
LEFT JOIN distribution_channel dc
ON o.dc_id = dc.dc_id
LEFT JOIN city c
ON o.order_city = c.id_city
LEFT JOIN payment_channel pc
ON op.op_payment_code = pc.pc_code
);

但是因为有很多记录,我正在寻找一种解决方案,即添加索引,如下所示,

CREATE INDEX MyIndex
ON dashboard_sales(op_total, order_date)

但是我遇到了这样的错误,

#1347 - 'matoa_admin.dashboard_sales' is not BASE TABLE

如何解决这个问题?它可以在 TableView 中建立索引吗?

最佳答案

您需要在表上创建索引,而不是在 View 本身上创建索引。

op_total 和 order_date 不是这里首先要考虑的问题。您首先需要确保主查询的 on 子句正在使用索引列,如果没有,您可能需要为其创建适当的索引。

我建议您使用解释计划来检测性能问题。然后你就可以采取必要的行动。

查询本身不会给我们提供信息,解释计划对于确定可能的问题是必要的

关于mysql - MySQL TableView 添加索引的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56572950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com