This question again struck me today, somebody just throw a simple question about EXPLAIN statement in MySQL and in hast I relate that to DESCRIBE. When that person cut the line of phone, I suddenly realize my mistake.

I am working with PHP and MySQL since last seven years then why this happen to me? This is because I am not using MySQL frequently, although it is the integral part of almost every application I am working on. I am fairly away from MySQL queries because I am using my factory classes or framework like cakephp which does not require me to write the SQL queries. Almost all of my operations on database are covered within my CRUD classes. Even complex select or updates are possible using simple search objects in my factory classes or framework I am using.

BUT this practice has caused a deficiency in my knowledge of MySQL statements. This situation is really horrible sometime. Do I need to stop using my factory classe practice and abstraction. I normally prefer abstraction and factory classes because I want to make my code portable to other databases also.

I am really a in fix What should I do?
BUT again another question struck me What is more important? My knowledge of MySQL statements or fast and portable execution of projects. When we got the higher level, we certainly miss the lower level details of applications.

So I will stick to my factory classes, because I know I may struggle with some academic questions about MySQL for the time being but at least I can do the stuff with just one reference to MySQL manual. Above all I may face problem in simple MySQL statements but I am good at high level things like replication and performance tuning at server level.

What you say is it a good decision?