Hello All,
I am a MS SQL Developer working on a Greenplum Server which I have ETL
Packages for migrating data to MS SQL (currently not the issue).
I have a Data Warehouse schema where I populate Dimensional
and FACT tables. BTW, the below queries cannot be changed (queries
below are just for example; though their very similar)

Example dim Tables
Code:
INSERT INTO dw.dim_secondtable (cde)
SELECT DISTINCT cde
FROM source.secondtable;

INSERT INTO dw.dim_thirdtable (def)
SELECT DISTINCT def
FROM source.thirdtable;
Example fact Table
Code:
    CREATE TABLE source.fact_source AS
    SELECT
        mt.abc
        , mt.bcd
        , st.cde
        , tt.def
    FROM source.maintable mt 
        LEFT OUTER JOIN source.secondtable st 
            ON mt.somefield = st.somefield
        LEFT OUTER JOIN source.thirdtable tt
            ON mt.anotherfield = tt.anotherfield
            
    INSERT INTO dw.fact ( abc, bcd, secondtable_key, thirdtable_key )
    SELECT
        fs.abc
        , fs.bcd
        , ds.secondtable_key
        , dt.thirdtable_key
    FROM source.fact_source fs
        LEFT OUTER JOIN dw.dim_secondtable ds
            ON fs.cde = ds.cde
        LEFT OUTER JOIN dw.dim_thirdtable dt
            ON fs.def = dt.def
I would like to
  1. Create Indexes on source.maintable, source.secondtable, and source.thirdtable for populating source.fact_source
  2. Create Indexes on dw.dim_secondtable, dw.dim_thirdtable, and source.fact_source for populating dw.fact


I am having confusion with which parameters would be best for my current situtation. Thanks in advance!