Reputation: 632
How to create a materialized view in mysql ? I am not able to create a materialized view as we do in MS SQL Server.
Could anyone let me know the ways to create it in mysql.
Upvotes: 10
Views: 22398
Reputation: 1916
www.LeapDB.com provides MySQL materialized views. straight forward with the proper syntax. It's an add on to MySQL.
Upvotes: 0
Reputation: 808
Here's what I've had success with so far:
I've been collecting and analyzing these methods, their pros and cons in my article Creating MySQL materialized views
looking forwards for feedback or proposals for other methods for creating materialized views in MySQL
Upvotes: 11
Reputation: 48357
You can create a non-updateable dynamic view - and if you've got (indexed) timestamps in the underlying table(s) you can add in a snapshot, something like:
CREATE VIEW almost_materialzd
AS
SELECT snp.*
FROM snapshot snp
WHERE s.id NOT IN (SELECT id
FROM source_data sd
INNER JOIN ref_data rd
ON rd.value='snapshot of source_data'
AND sd.update_timestamp>rd.timetamp)
UNION
SELECT *
FROM source_data sd2
INNER JOIN ref_data rd2
ON rd2.value='snapshot of source_data'
AND sd2.update_timestamp>rd2.timetamp);
But a better solution is to add a trigger (or triggers) to the the underlying table(s) to re-populate the relevant rows in a table representing the materialized view when the underlying tables are changed.
Upvotes: 7