Path 1 (Click Here For SQL Analysis)

CS290F Fall 2006 - UCSB Computer Science - Thorsten von Eicken

Jump to: navigation, search

Contents

Homepage

SHOW FIELDS FROM musics�
SELECT count(*) AS count_all FROM musics
SELECT * FROM musics LIMIT 0, 10
SHOW FIELDS FROM ratings
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 1) 
SELECT * FROM ratings WHERE (ratings.music_id = 1)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 2) 
SELECT * FROM ratings WHERE (ratings.music_id = 2)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 3) 
SELECT * FROM ratings WHERE (ratings.music_id = 3)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 4) 
SELECT * FROM ratings WHERE (ratings.music_id = 4)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 5) 
SELECT * FROM ratings WHERE (ratings.music_id = 5)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 6) 
SELECT * FROM ratings WHERE (ratings.music_id = 6)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 7) 
SELECT * FROM ratings WHERE (ratings.music_id = 7)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 8) 
SELECT * FROM ratings WHERE (ratings.music_id = 8)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 9) 
SELECT * FROM ratings WHERE (ratings.music_id = 9) 
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 10)
SELECT * FROM ratings WHERE (ratings.music_id = 10)
SHOW FIELDS FROM users
SELECT * FROM users WHERE (users.`id` = 9 ) LIMIT 1

Search For Bob Marley by Artist Name

SHOW FIELDS FROM musics
SELECT count(*) AS count_all FROM musics WHERE (artist like '%Bob Marley%')
EXPLAIN SELECT count(*) AS count_all FROM musics WHERE (artist like '%Bob Marley%');
Before:
+----+-------------+--------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table  | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+--------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | musics | ALL  | NULL          | NULL | NULL    | NULL |   12 | Using where | 
+----+-------------+--------+------+---------------+------+---------+------+------+-------------+
After adding index for artist:
+----+-------------+--------+-------+---------------+--------------+---------+------+------+--------------------------+
| id | select_type | table  | type  | possible_keys | key          | key_len | ref  | rows | Extra                    |
+----+-------------+--------+-------+---------------+--------------+---------+------+------+--------------------------+
|  1 | SIMPLE      | musics | index | NULL          | artist_index | 258     | NULL |   12 | Using where; Using index | 
+----+-------------+--------+-------+---------------+--------------+---------+------+------+--------------------------+

View results

SELECT * FROM musics WHERE (artist like '%Bob Marley%') LIMIT 0, 10
SHOW FIELDS FROM ratings
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 12)
EXPLAIN SELECT * FROM musics WHERE (artist like '%Bob Marley%') LIMIT 0, 10
Before:
+----+-------------+--------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table  | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+--------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | musics | ALL  | NULL          | NULL | NULL    | NULL |   12 | Using where | 
+----+-------------+--------+------+---------------+------+---------+------+------+-------------+
 
After adding index for artist:
EXPLAIN SELECT * FROM musics WHERE (artist like '%Bob Marley%') LIMIT 0, 10;
+----+-------------+--------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table  | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+--------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | musics | ALL  | NULL          | NULL | NULL    | NULL |   12 | Using where | 
+----+-------------+--------+------+---------------+------+---------+------+------+-------------+

NOTE: Apparently adding index only helps when select query used with exect matches... ex:
EXPLAIN SELECT * FROM musics WHERE (artist='Bob Marley') LIMIT 0, 10;
+----+-------------+--------+------+---------------+--------------+---------+-------+------+-------------+
| id | select_type | table  | type | possible_keys | key          | key_len | ref   | rows | Extra       |
+----+-------------+--------+------+---------------+--------------+---------+-------+------+-------------+
|  1 | SIMPLE      | musics | ref  | artist_index  | artist_index | 258     | const |    1 | Using where | 
+----+-------------+--------+------+---------------+--------------+---------+-------+------+-------------+

Listen to Song

NO SQL queries necessary

Login

SHOW FIELDS FROM users
SELECT * FROM users WHERE (users.`id` = 9 ) LIMIT 1

Rates Song

SHOW FIELDS FROM users
SELECT * FROM users WHERE (users.`id` = 9 ) LIMIT 1
SELECT * FROM ratings WHERE (music_id=12 and user_id=9) LIMIT 1
SHOW FIELDS FROM ratings
SHOW FIELDS FROM users
SELECT * FROM users WHERE (users.`id` = 9 ) LIMIT 1
SELECT * FROM ratings WHERE (music_id=12 and user_id=9) LIMIT 1
SHOW FIELDS FROM ratings
BEGIN
INSERT INTO ratings (`score`, `review`, `user_id`, `music_id`) VALUES(5, 'great song... a classic', 9, 12)
COMMIT

User gets redirected back to the search result:

SHOW FIELDS FROM musics
SELECT count(*) AS count_all FROM musics WHERE (artist like '%Bob Marley%')
SELECT * FROM musics WHERE (artist like '%Bob Marley%') LIMIT 0, 10
For SQL EXPLAIN, see #Search For Bob Marley by Artist Name

Rendering store/index

SHOW FIELDS FROM ratings
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 12)
SELECT * FROM ratings WHERE (ratings.music_id = 12)
SHOW FIELDS FROM users
SELECT * FROM users WHERE (users.`id` = 9 ) LIMIT 1

Add to Playlist (cart)

SELECT * FROM musics WHERE (musics.id = '12') LIMIT 1
SHOW FIELDS FROM musics

User gets redirected back to the search result:

SHOW FIELDS FROM musics
SELECT count(*) AS count_all FROM musics WHERE (artist like '%Bob Marley%')
SELECT * FROM musics WHERE (artist like '%Bob Marley%') LIMIT 0, 10
SHOW FIELDS FROM ratings
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 12)
SELECT * FROM ratings WHERE (ratings.music_id = 12)
SHOW FIELDS FROM users
SELECT * FROM users WHERE (users.`id` = 9 ) LIMIT 1
For SQL EXPLAIN, see #Search For Bob Marley by Artist Name

Checkout

SHOW FIELDS FROM users
SELECT * FROM users WHERE (users.`id` = 9 ) LIMIT 1
SHOW FIELDS FROM orders
SHOW FIELDS FROM musics

Place Order

User places order:

SHOW FIELDS FROM users
SELECT * FROM users WHERE (users.`id` = 9 ) LIMIT 1
SHOW FIELDS FROM orders
SHOW FIELDS FROM line_items
SHOW FIELDS FROM musics
BEGIN
COMMIT
BEGIN
INSERT INTO orders (`city`, `name`, `name_cd`, `zipcode`, `cc_cvv`, `pay_type`, `street_address`, `cc_num`, `cc_exp`, `user_id`, `email`, `state`)
VALUES('938', 'Best Song', 'Bob\'s song', '93117', '345', 'cc', '239', '445', '345', 9, 'bob@bob.com', 'CA')
INSERT INTO line_items (`order_id`, `total_price`, `quantity`, `music_id`) VALUES(10, 0.6, 1, 12)
COMMIT

User gets redirected back to the index page:

SHOW FIELDS FROM musics
SELECT count(*) AS count_all FROM musics
SELECT * FROM musics LIMIT 0, 10
SHOW FIELDS FROM ratings
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 1)
SELECT * FROM ratings WHERE (ratings.music_id = 1)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 2)
SELECT * FROM ratings WHERE (ratings.music_id = 2)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 3)
SELECT * FROM ratings WHERE (ratings.music_id = 3)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 4)
SELECT * FROM ratings WHERE (ratings.music_id = 4)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 5)
SELECT * FROM ratings WHERE (ratings.music_id = 5)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 6)
SELECT * FROM ratings WHERE (ratings.music_id = 6)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 7)
SELECT * FROM ratings WHERE (ratings.music_id = 7)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 8)
SELECT * FROM ratings WHERE (ratings.music_id = 8)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 9)
SELECT * FROM ratings WHERE (ratings.music_id = 9)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 10)
SELECT * FROM ratings WHERE (ratings.music_id = 10) 
SHOW FIELDS FROM users
SELECT * FROM users WHERE (users.`id` = 9 ) LIMIT 1

Logout

User logs out:

SHOW FIELDS FROM users
SELECT * FROM users WHERE (users.`id` = 9 ) LIMIT 1
BEGIN
UPDATE users SET `created_at` = '2006-10-29 14:55:35', `login` = 'admin', `crypted_password` = 'c234257313a861411cb56631ec771dd26c70b975',  
`remember_token_expires_at` = NULL, `salt` = '397c58c23f658b371a9cdbc495e8f15fb7deb6fd', `remember_token` = NULL, `email` = 'admin', 
`updated_at` =  '2006-11-06 20:01:16' WHERE id = 9
COMMIT

After logging out, user gets redirected back to the index page:

SHOW FIELDS FROM musics
SELECT count(*) AS count_all FROM musics
SELECT * FROM musics LIMIT 0, 10
SHOW FIELDS FROM ratings
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 1)
SELECT * FROM ratings WHERE (ratings.music_id = 1)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 2)
SELECT * FROM ratings WHERE (ratings.music_id = 2)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 3)
SELECT * FROM ratings WHERE (ratings.music_id = 3)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 4)
SELECT * FROM ratings WHERE (ratings.music_id = 4)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 5)
SELECT * FROM ratings WHERE (ratings.music_id = 5)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 6)
SELECT * FROM ratings WHERE (ratings.music_id = 6)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 7)
SELECT * FROM ratings WHERE (ratings.music_id = 7)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 8)
SELECT * FROM ratings WHERE (ratings.music_id = 8)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 9)
SELECT * FROM ratings WHERE (ratings.music_id = 9)
SELECT count(*) AS count_all FROM ratings WHERE (ratings.music_id = 10)
SELECT * FROM ratings WHERE (ratings.music_id = 10)