How can I identify, which user, virtualhost or script use mostly cpu and memory or make highest load average?

I tried to use "top" command and "Apache Status", but I think this is not accurate.

For example:

"top" command shows:

PID USER %CPU %MEM TIME+ COMMAND
6356 apache 19.8 2.2 0:01.28 httpd

"Apache Status" shows:
Srv PID CPU VHost Request
47-0 6356 1.28 domain.com GET /images/pini.gif HTTP/1.1

Is this possible, that .gif image uses 19,8% of CPU?
What shows "Apache Status" CPU (CPU usage, number of seconds) field? Why often the highest values are also .gif, .jpg images or .html files instead of .php scripts?

How can I identify, which MySQL query use mostly memory or CPU resources? I tried phpMyAdmin Processlist, but this is also not accurate. Do you now another programs or another way to identify MySQL queries by pid or high CPU/Memory usage?