1, 前提:
①该建的索引我都建了. 
②其中billing_demond_result的有10W的数据.
2, 建立索引语句:DELIMITER $$
USE `weipaike`$$
DROP VIEW IF EXISTS `vw_billing_user_charge`$$
CREATE ALGORITHM=MERGE DEFINER=`mydb`@`%` SQL SECURITY DEFINER VIEW `vw_billing_user_charge` AS 
SELECT
  `a`.`phone`    AS `phone`,
  `a`.`province` AS `province`,
  `a`.`city`     AS `city`,
  `a`.`regtime`  AS `regtime`,
  `a`.`channel`  AS `channel`,
  (COUNT(`b`.`phone`) + IFNULL((SELECT COUNT(0) FROM `billing_demond_result` WHERE (`billing_demond_result`.`phone` = `a`.`phone`) GROUP BY `billing_demond_result`.`phone`),0)) AS `total_cnt`
FROM (`billing_id` `a`
   LEFT JOIN `billing_result` `b`
     ON ((`a`.`phone` = `b`.`phone`)))
WHERE (1 = 1)
GROUP BY `a`.`phone`$$
DELIMITER ;3, 建立后:
①会有"不能建立merge视图的警告", 然后自动转成temptable视图;
②使用SELECT * FROM vw_billing_user_charge LIMIT 100. 会耗时10S. 太慢了. 
4, 问:
请教大家该如何优化, 谢谢!
PS:
①若不建立视图, 直接执行sql, 则很快(0.2S就搞定), 原因:走索引, 而且不需要全表查.
②若建立视图, 通过视图的来查询, 则很慢(>10S才能搞定), 原因:虽然走索引, 但因为只能建立ALGORITHM=TEMPTABLE视图, 所以视图的数据得全表全部查询出来, 所以整体才查询会很慢