拿WordPress的數據庫作一個對比
SELECT ID,post_title, post_author FROM wp_posts ORDER BY ID LIMIT 100;
OK, Time: 0.023000s
SELECT * FROM wp_posts ORDER BY ID LIMIT 100;
OK, Time: 0.261000s
SELECT `ID` , `post_author` , `post_date` , `post_date_gmt` , `post_content` , `post_title` , `post_excerpt` , `post_status` , `comment_status` , `ping_status` , `post_password`, `post_name` , `to_ping` , `pinged` , `post_modified` , `post_modified_gmt`, `post_content_filtered`, `post_parent` , `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count` FROM wp_posts ORDER BY ID LIMIT 100;
OK, Time: 0.231000s
總結
- 字段更少速度更快
- 沒有大內容字段查詢速度更快,有大內容字段的表須要最優速度時,能夠寫明 select 的字段來排除大內容字段
- select * 和 select 所有字段的查詢速度相差不大
select * 的缺點
- select * 不能有效的利用覆蓋索引
- select * 讀取不須要的列會增長CPU、IO、NET消耗
覆蓋索引
覆蓋索引就是從索引中直接獲取查詢結果,要使用覆蓋索引須要注意select查詢列包含在索引列中;where條件包含索引列或者複合索引的前導列