/// <summary>
        /// 新建索引。
        /// </summary>
        /// <param name="command">当前命令。</param>
        /// <param name="builder">SQL语句构建实例。</param>
        protected override void Generate(CreateIndexCommand command, IndentedStringBuilder builder)
        {
            base.Generate(command, builder);

            if (command.IsUnique && command.IsCustered != true)
            {
                builder.Append(" WHERE ");
                for (var i = 0; i < command.Columns.Length; i++)
                {
                    if (i != 0)
                    {
                        builder.Append(" AND ");
                    }

                    builder
                        .Append(Sql.DelimitIdentifier(command.Columns[i]))
                        .Append(" IS NOT NULL");
                }
            }
        }
        /// <summary>
        /// 新建索引。
        /// </summary>
        /// <param name="command">当前命令。</param>
        /// <param name="builder">SQL语句构建实例。</param>
        protected virtual void Generate(CreateIndexCommand command, IndentedStringBuilder builder)
        {
            Check.NotNull(command, nameof(command));
            Check.NotNull(builder, nameof(builder));

            builder.Append("CREATE ");

            if (command.IsUnique)
            {
                builder.Append("UNIQUE ");
            }

            IndexTraits(command, builder);

            builder
                .Append("INDEX ")
                .Append(Sql.DelimitIdentifier(Prefix(command.Name)))
                .Append(" ON ")
                .Append(Sql.DelimitIdentifier(Prefix(command.Table), command.Schema))
                .Append(" (")
                .Append(ColumnList(command.Columns))
                .Append(")");
        }