Machine Learning For Query Optimization