select * 和 select 字段的速度對比

拿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

總結

  1. 字段更少速度更快
  2. 沒有大內容字段查詢速度更快,有大內容字段的表須要最優速度時,能夠寫明 select 的字段來排除大內容字段
  3. select * 和 select 所有字段的查詢速度相差不大

select * 的缺點

  1. select * 不能有效的利用覆蓋索引
  2. select * 讀取不須要的列會增長CPU、IO、NET消耗

覆蓋索引

覆蓋索引就是從索引中直接獲取查詢結果,要使用覆蓋索引須要注意select查詢列包含在索引列中;where條件包含索引列或者複合索引的前導列
相關文章
相關標籤/搜索