title: SnowFlake Stored Procedure Multi Threading
body: <p>Being new to Snowflake I am trying to understand how to write JavaScript based Stored Procedures (SP) to take advantage of multi-thread/parallel processing.
  My background is SQL Server and writing SP, taking advantage of performance feature such as  degrees of parallelism, worker threads, indexing, column store segment elimination.</p>
  
  <p>I am started to get accustomed to setting up the storage and using clustering keys, micro partitioning, and any other performance feature available, but I don't get how Snowflake SPs break down a given SQL statement into parallel streams. I am struggling to find any documentation to explain the internal workings. 
  My concern is producing SPs that serialise everything on one thread and become bottlenecks.
  I am wondering if I am applying the correct technique/ need a different mindset to developing SPs.
  I hope I have explained my concern sufficiently. In essence I am building a PoC to migrate an on-premise SQL Server DWH ETL solution to Snowflake/Matillion ELT solution, one aspect being evaluating the compute virtual warehouse size I need.</p>