Why MySQL (and other DBs as well) indexes/keys are good!
I was working with a managed customer who handles their own DBA tasks on their servers when I noticed a recent change had created a major slow down in the speed of their front page. Here is the Apache Bench of their main page (actual URL removed to protect the guilty).
Server Software: Apache/2.2.0
Server Hostname: <REMOVED>
Document Path: /index.php
Document Length: 103866 bytes
Concurrency Level: 10
Time taken for tests: 46.619197 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 10454000 bytes
HTML transferred: 10386600 bytes
Requests per second: 2.15 [#/sec] (mean)
Time per request: 4661.920 [ms] (mean)
Time per request: 466.192 [ms] (mean, across all concurrent requests)
Transfer rate: 218.97 [Kbytes/sec] received
The power of a simple index:
CREATE INDEX phpsession_speed on session_data(phpsessionid);
Server Software: Apache/2.2.0
Server Hostname: <REMOVED>
Server Port: 80
Document Path: /index.php
Document Length: 103866 bytes
Concurrency Level: 10
Time taken for tests: 3.396604 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 10454000 bytes
HTML transferred: 10386600 bytes
Requests per second: 29.44 [#/sec] (mean)
Time per request: 339.660 [ms] (mean)
Time per request: 33.966 [ms] (mean, across all concurrent requests)
Transfer rate: 3005.35 [Kbytes/sec] received
There are MANY more optimizations I need to work with their DBA/Webdev because now their SQL server is saturating a gigabit connection with the webserver at the 30-40 RPS mark but this fixed their immediate problem.