0

ここで私はビューを作成しています

CREATE VIEW customerusage
AS
SELECT group_concat(customername SEPARATOR ' ||| '),
    customerlocation,
    customerid,
    product
FROM customer AS c
INNER JOIN product AS p ON (c.product_id = c.product_id)
GROUP BY product_id

このテーブルは毎日更新する必要がありますが、毎分更新するのは細かすぎます。どうすれば更新できますか。ビュー以外のオプションはありますか?

4

1 に答える 1

0

ビューを更新可能にする必要があります。http://dev.mysql.com/doc/refman/5.6/en/view-updataability.htmlを参照してください。

要約すれば:

ビュー内の行と、更新されるベース テーブル内の行との間に 1 対 1 の関係がある場合、ビューは更新可能です。

ビューが更新可能で、ベース テーブルに存在するがビューで名前が付けられていない列にデフォルト値がある場合、そのビューは挿入可能です。

group_concat(customername SEPARATOR ' ||| ')表情が一対一の関係を壊してしまうと思います。つまり、この式により、ビューを更新できなくなる可能性があります。

この式GROUP BY product_idは、ビューとベース テーブルの間の 1 対 1 の関係を確実に壊します。

逆にベーステーブルを更新・挿入すると、1対1の関係でビューに反映されます。このような関係がある場合、ビューはMERGEアルゴリズムを使用し、ベース テーブルの変更がビューに反映されます。このような 1 対 1 の関係がない場合、使用されるアルゴリズムは になりますTEMPLATE。つまり、ビュー用に一時テーブルが作成されます。ビュー アルゴリズムについては、 http://dev.mysql.com/doc/refman/5.0/en/view-algorithms.htmlを参照してください。

于 2013-09-20T11:16:33.250 に答える