/// <summary> /// 新建物化视图 /// </summary> private void CreateMV(EntityModel model, CqlMaterializedView view) { //TODO:考虑先尝试移除已存在的 var sb = StringBuilderCache.Acquire(); sb.Append("CREATE MATERIALIZED VIEW "); sb.Append($"\"{model.Id}_{view.Name}\" AS "); sb.Append($"SELECT * FROM \"{model.Name}\" WHERE "); //TODO:暂Select * for (int i = 0; i < view.PrimaryKey.PartitionKeys.Length; i++) { if (i != 0) { sb.Append(" And "); } sb.Append($"\"{view.PrimaryKey.PartitionKeys[i]}\" IS NOT NULL"); } if (view.PrimaryKey.ClusteringColumns != null) { for (int i = 0; i < view.PrimaryKey.ClusteringColumns.Length; i++) { sb.Append($" And \"{model.GetMember(view.PrimaryKey.ClusteringColumns[i].MemberId, true).Name}\" IS NOT NULL"); } } BuildPrimaryKey(sb, view.PrimaryKey, model); BuildOrderBy(sb, view.PrimaryKey, model); session.Execute(StringBuilderCache.GetStringAndRelease(sb)); }
/// <summary> /// 删除物化视图 /// </summary> private void DropMV(EntityModel model, CqlMaterializedView view) { session.Execute($"DROP MATERIALIZED VIEW IF EXISTS \"{model.Id}_{view.Name}\""); }