再一次利用with as 优化SQL

上海的一个哥们问我有个SQL跑了4个小时都没跑完,实在受不了了,找我优化一下。我确实挺佩服他的,要是我遇到跑了几分钟的,就受不了了。

SQL语句和执行计划如下:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. --sql id:1qbbw3th4x8yc  
  2.   
  3.    
  4.   
  5. SELECT "VOUCHER".FID "ID",  
  6.   
  7.        "ENTRIES".FID "ENTRIES.ID",  
  8.   
  9.        "ENTRIES".FEntryDC "ENTRIES.ENTRYDC",  
  10.   
  11.        "ACCOUNT".FID "ACCOUNT.ID",  
  12.   
  13.        "ENTRIES".FCurrencyID "CURRENCY.ID",  
  14.   
  15.        "PERIOD".FNumber "PERIOD.NUMBER",  
  16.   
  17.        "ENTRIES".FSeq "ENTRIES.SEQ",  
  18.   
  19.        "ENTRIES".FLocalExchangeRate "LOCALEXCHANGERATE",  
  20.   
  21.        "ENTRIES".FReportingExchangeRate "REPORTINGEXCHANGERATE",  
  22.   
  23.        "ENTRIES".FMeasureUnitID "ENTRYMEASUREUNIT.ID",  
  24.   
  25.        "ASSISTRECORDS".FID "ASSISTRECORDS.ID",  
  26.   
  27.        "ASSISTRECORDS".FSeq "ASSISTRECORDS.SEQ",  
  28.   
  29.        CASE  
  30.   
  31.          WHEN (("ACCOUNT".FCAA IS NULL) AND  
  32.   
  33.               ("ACCOUNT".FhasUserProperty <> 1)) THEN  
  34.   
  35.           "ENTRIES".FOriginalAmount  
  36.   
  37.          ELSE  
  38.   
  39.           "ASSISTRECORDS".FOriginalAmount  
  40.   
  41.        END "ASSISTRECORDS.ORIGINALAMOUNT",  
  42.   
  43.        CASE  
  44.   
  45.          WHEN (("ACCOUNT".FCAA IS NULL) AND  
  46.   
  47.               ("ACCOUNT".FhasUserProperty <> 1)) THEN  
  48.   
  49.           "ENTRIES".FLocalAmount  
  50.   
  51.          ELSE  
  52.   
  53.           "ASSISTRECORDS".FLocalAmount  
  54.   
  55.        END "ASSISTRECORDS.LOCALAMOUNT",  
  56.   
  57.        CASE  
  58.   
  59.          WHEN (("ACCOUNT".FCAA IS NULL) AND  
  60.   
  61.               ("ACCOUNT".FhasUserProperty <> 1)) THEN  
  62.   
  63.           "ENTRIES".FReportingAmount  
  64.   
  65.          ELSE  
  66.   
  67.           "ASSISTRECORDS".FReportingAmount  
  68.   
  69.        END "ASSISTRECORDS.REPORTINGAMOUNT",  
  70.   
  71.        CASE  
  72.   
  73.          WHEN (("ACCOUNT".FCAA IS NULL) AND  
  74.   
  75.               ("ACCOUNT".FhasUserProperty <> 1)) THEN  
  76.   
  77.           "ENTRIES".FQuantity  
  78.   
  79.          ELSE  
  80.   
  81.           "ASSISTRECORDS".FQuantity  
  82.   
  83.        END "ASSISTRECORDS.QUANTITY",  
  84.   
  85.        CASE  
  86.   
  87.          WHEN (("ACCOUNT".FCAA IS NULL) AND  
  88.   
  89.               ("ACCOUNT".FhasUserProperty <> 1)) THEN  
  90.   
  91.           "ENTRIES".FStandardQuantity  
  92.   
  93.          ELSE  
  94.   
  95.           "ASSISTRECORDS".FStandardQuantity  
  96.   
  97.        END "ASSISTRECORDS.STANDARDQTY",  
  98.   
  99.        CASE  
  100.   
  101.          WHEN (("ACCOUNT".FCAA IS NULL) AND  
  102.   
  103.               ("ACCOUNT".FhasUserProperty <> 1)) THEN  
  104.   
  105.           "ENTRIES".FPrice  
  106.   
  107.          ELSE  
  108.   
  109.           "ASSISTRECORDS".FPrice  
  110.   
  111.        END "ASSISTRECORDS.PRICE",  
  112.   
  113.        CASE  
  114.   
  115.          WHEN ("ACCOUNT".FCAA IS NULL) THEN  
  116.   
  117.           NULL  
  118.   
  119.          ELSE  
  120.   
  121.           "ASSISTRECORDS".FAssGrpID  
  122.   
  123.        END "ASSGRP.ID"  
  124.   
  125.   FROM T_GL_Voucher "VOUCHER"  
  126.   
  127.   LEFT OUTER JOIN T_BD_Period "PERIOD"  
  128.   
  129.     ON "VOUCHER".FPeriodID = "PERIOD".FID  
  130.   
  131.  INNER JOIN T_GL_VoucherEntry "ENTRIES"  
  132.   
  133.     ON "VOUCHER".FID = "ENTRIES".FBillID  
  134.   
  135.  INNER JOIN T_BD_AccountView "ACCOUNT"  
  136.   
  137.     ON "ENTRIES".FAccountID = "ACCOUNT".FID  
  138.   
  139.   LEFT OUTER JOIN T_GL_VoucherAssistRecord "ASSISTRECORDS"  
  140.   
  141.     ON "ENTRIES".FID = "ASSISTRECORDS".FEntryID  
  142.   
  143.  WHERE "VOUCHER".FID IN  
  144.   
  145.        (SELECT "VOUCHER".FID "ID"  
  146.   
  147.           FROM T_GL_Voucher "VOUCHER"  
  148.   
  149.          INNER JOIN T_GL_VoucherEntry "ENTRIES"  
  150.   
  151.             ON "VOUCHER".FID = "ENTRIES".FBillID  
  152.   
  153.          INNER JOIN T_BD_AccountView "ACCOUNT"  
  154.   
  155.             ON "ENTRIES".FAccountID = "ACCOUNT".FID  
  156.   
  157.          INNER JOIN t_bd_accountview PAV  
  158.   
  159.             ON ((INSTR("ACCOUNT".flongnumber, pav.flongnumber) = 1 AND  
  160.   
  161.                pav.faccounttableid = "ACCOUNT".faccounttableid) AND  
  162.   
  163.                pav.fcompanyid = "ACCOUNT".fcompanyid)  
  164.   
  165.          WHERE (("VOUCHER".FCompanyID IN ('fSSF82rRSKexM3KKN1d0tMznrtQ=')) AND  
  166.   
  167.                (("VOUCHER".FBizStatus IN (5)) AND  
  168.   
  169.                ((("VOUCHER".FPeriodID IN ('+wQxkBFVRiKnV7OniceMDoI4jEw=')) AND  
  170.   
  171.                "ENTRIES".FCurrencyID =  
  172.   
  173.                'dfd38d11-00fd-1000-e000-1ebdc0a8100dDEB58FDC') AND  
  174.   
  175.                (pav.FID IN ('vyPiKexLRXiyMb41VSVVzJ2pmCY='))))))  
  176.   
  177.  ORDER BY "ID" ASC, "ENTRIES.SEQ" ASC, "ASSISTRECORDS.SEQ" ASC  
  178.   
  179.    
  180.   
  181. --执行计划  
  182.   
  183.    
  184.   
  185. --------------------------------------------------------------------------------------------------------  
  186.   
  187. | Id  | Operation                              | Name                     | Rows  | Bytes | Cost (%CPU)|  
  188.   
  189. --------------------------------------------------------------------------------------------------------  
  190.   
  191. |   0 | SELECT STATEMENT                       |                          |    13 |  5733 |   486   (1)|  
  192.   
  193. |   1 |  SORT ORDER BY                         |                          |    13 |  5733 |   486   (1)|  
  194.   
  195. |   2 |   VIEW                                 | VM_NWVW_2                |    13 |  5733 |   486   (1)|  
  196.   
  197. |   3 |    HASH UNIQUE                         |                          |    13 | 11115 |   486   (1)|  
  198.   
  199. |   4 |     NESTED LOOPS OUTER                 |                          |    13 | 11115 |   485   (1)|  
  200.   
  201. |   5 |      NESTED LOOPS                      |                          |     9 |  6606 |   471   (1)|  
  202.   
  203. |   6 |       NESTED LOOPS                     |                          |     9 |  6057 |   467   (1)|  
  204.   
  205. |   7 |        MERGE JOIN OUTER                |                          |     1 |   473 |   459   (1)|  
  206.   
  207. |   8 |         HASH JOIN                      |                          |     1 |   427 |   458   (1)|  
  208.   
  209. |   9 |          NESTED LOOPS                  |                          |       |       |            |  
  210.   
  211. |  10 |           NESTED LOOPS                 |                          |   258 | 83850 |   390   (0)|  
  212.   
  213. |  11 |            NESTED LOOPS                |                          |     6 |  1332 |     3   (0)|  
  214.   
  215. |  12 |             TABLE ACCESS BY INDEX ROWID| T_BD_ACCOUNTVIEW         |     1 |   111 |     2   (0)|  
  216.   
  217. |  13 |              INDEX UNIQUE SCAN         | PK_BD_ACCOUNTVIEW        |     1 |       |     1   (0)|  
  218.   
  219. |  14 |             INDEX RANGE SCAN           | IX_BD_ACTCOMLNUM         |     6 |   666 |     1   (0)|  
  220.   
  221. |  15 |            INDEX RANGE SCAN            | IX_GL_VCHAACCT           |   489 |       |     1   (0)|  
  222.   
  223. |  16 |           TABLE ACCESS BY INDEX ROWID  | T_GL_VOUCHERENTRY        |    42 |  4326 |    65   (0)|  
  224.   
  225. |  17 |          INDEX RANGE SCAN              | IX_GL_VCH_11             |  7536 |   750K|    68   (0)|  
  226.   
  227. |  18 |         BUFFER SORT                    |                          |     1 |    46 |   391   (0)|  
  228.   
  229. |  19 |          INDEX RANGE SCAN              | IX_PERIOD_ENC            |     1 |    46 |     1   (0)|  
  230.   
  231. |  20 |        TABLE ACCESS BY INDEX ROWID     | T_GL_VOUCHERENTRY        |    17 |  3400 |     8   (0)|  
  232.   
  233. |  21 |         INDEX RANGE SCAN               | IX_GL_VCHENTRYFQ1        |    17 |       |     1   (0)|  
  234.   
  235. |  22 |       TABLE ACCESS BY INDEX ROWID      | T_BD_ACCOUNTVIEW         |     1 |    61 |     1   (0)|  
  236.   
  237. |  23 |        INDEX UNIQUE SCAN               | PK_BD_ACCOUNTVIEW        |     1 |       |     1   (0)|  
  238.   
  239. |  24 |      TABLE ACCESS BY INDEX ROWID       | T_GL_VOUCHERASSISTRECORD |     1 |   121 |     2   (0)|  
  240.   
  241. |  25 |       INDEX RANGE SCAN                 | IX_GL_VCHASSREC_11       |     2 |       |     1   (0)|  
  242.   
  243. --------------------------------------------------------------------------------------------------------  
  244.   
  245.    
  246.   
  247. Note  
  248.   
  249. -----  
  250.   
  251.    - 'PLAN_TABLE' is old version  

我靠 plan_table is old version....一般遇到这种执行计划发给我 我是理都不理的,但是 这哥们关系好,算了吧 勉为其难。

那我就不从执行计划 入手优化了,直接分析sql语句优化。这个sql挺简单的,from 后面几个表, where 有个 in ,最后有个order by

问他 in 后面返回多少记录

落落  17:11:46

你先看 where in 里面跑多久
上海-咖啡迷  17:12:40
很快
23s 16880rows

其他表大小如下


看到这些就知道怎么优化了 。之前跑4个小时不出结果,那行嘛 我给你优化到1分钟

in 只返回16880条数据,那么可以用in作为驱动表去驱动 T_GL_Voucher

思路 就跟 这个博客一样的 http://blog.csdn.net/robinson1988/article/details/10551467 我靠 居然还个sb在乱评论

因为in里面有点复杂,不好用hint,我偷懒,难得去搞了,直接 用下面的sql 优化

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. with x as  (SELECT  /*+ materialize */  "VOUCHER".FID "ID"  
  2.   
  3.           FROM T_GL_Voucher "VOUCHER"  
  4.   
  5.          INNER JOIN T_GL_VoucherEntry "ENTRIES"  
  6.   
  7.             ON "VOUCHER".FID = "ENTRIES".FBillID  
  8.   
  9.          INNER JOIN T_BD_AccountView "ACCOUNT"  
  10.   
  11.             ON "ENTRIES".FAccountID = "ACCOUNT".FID  
  12.   
  13.          INNER JOIN t_bd_accountview PAV  
  14.   
  15.             ON ((INSTR("ACCOUNT".flongnumber, pav.flongnumber) = 1 AND  
  16.   
  17.                pav.faccounttableid = "ACCOUNT".faccounttableid) AND  
  18.   
  19.                pav.fcompanyid = "ACCOUNT".fcompanyid)  
  20.   
  21.          WHERE (("VOUCHER".FCompanyID IN ('fSSF82rRSKexM3KKN1d0tMznrtQ=')) AND  
  22.   
  23.                (("VOUCHER".FBizStatus IN (5)) AND  
  24.   
  25.                ((("VOUCHER".FPeriodID IN ('+wQxkBFVRiKnV7OniceMDoI4jEw=')) AND  
  26.   
  27.                "ENTRIES".FCurrencyID =  
  28.   
  29.                'dfd38d11-00fd-1000-e000-1ebdc0a8100dDEB58FDC') AND  
  30.   
  31.                (pav.FID IN ('vyPiKexLRXiyMb41VSVVzJ2pmCY='))))))  
  32.   
  33. SELECT "VOUCHER".FID "ID",  
  34.   
  35.        "ENTRIES".FID "ENTRIES.ID",  
  36.   
  37.        "ENTRIES".FEntryDC "ENTRIES.ENTRYDC",  
  38.   
  39.        "ACCOUNT".FID "ACCOUNT.ID",  
  40.   
  41.        "ENTRIES".FCurrencyID "CURRENCY.ID",  
  42.   
  43.        "PERIOD".FNumber "PERIOD.NUMBER",  
  44.   
  45.        "ENTRIES".FSeq "ENTRIES.SEQ",  
  46.   
  47.        "ENTRIES".FLocalExchangeRate "LOCALEXCHANGERATE",  
  48.   
  49.        "ENTRIES".FReportingExchangeRate "REPORTINGEXCHANGERATE",  
  50.   
  51.        "ENTRIES".FMeasureUnitID "ENTRYMEASUREUNIT.ID",  
  52.   
  53.        "ASSISTRECORDS".FID "ASSISTRECORDS.ID",  
  54.   
  55.        "ASSISTRECORDS".FSeq "ASSISTRECORDS.SEQ",  
  56.   
  57.        CASE  
  58.   
  59.          WHEN (("ACCOUNT".FCAA IS NULL) AND  
  60.   
  61.               ("ACCOUNT".FhasUserProperty <> 1)) THEN  
  62.   
  63.           "ENTRIES".FOriginalAmount  
  64.   
  65.          ELSE  
  66.   
  67.           "ASSISTRECORDS".FOriginalAmount  
  68.   
  69.        END "ASSISTRECORDS.ORIGINALAMOUNT",  
  70.   
  71.        CASE  
  72.   
  73.          WHEN (("ACCOUNT".FCAA IS NULL) AND  
  74.   
  75.               ("ACCOUNT".FhasUserProperty <> 1)) THEN  
  76.   
  77.           "ENTRIES".FLocalAmount  
  78.   
  79.          ELSE  
  80.   
  81.           "ASSISTRECORDS".FLocalAmount  
  82.   
  83.        END "ASSISTRECORDS.LOCALAMOUNT",  
  84.   
  85.        CASE  
  86.   
  87.          WHEN (("ACCOUNT".FCAA IS NULL) AND  
  88.   
  89.               ("ACCOUNT".FhasUserProperty <> 1)) THEN  
  90.   
  91.           "ENTRIES".FReportingAmount  
  92.   
  93.          ELSE  
  94.   
  95.           "ASSISTRECORDS".FReportingAmount  
  96.   
  97.        END "ASSISTRECORDS.REPORTINGAMOUNT",  
  98.   
  99.        CASE  
  100.   
  101.          WHEN (("ACCOUNT".FCAA IS NULL) AND  
  102.   
  103.               ("ACCOUNT".FhasUserProperty <> 1)) THEN  
  104.   
  105.           "ENTRIES".FQuantity  
  106.   
  107.          ELSE  
  108.   
  109.           "ASSISTRECORDS".FQuantity  
  110.   
  111.        END "ASSISTRECORDS.QUANTITY",  
  112.   
  113.        CASE  
  114.   
  115.          WHEN (("ACCOUNT".FCAA IS NULL) AND  
  116.   
  117.               ("ACCOUNT".FhasUserProperty <> 1)) THEN  
  118.   
  119.           "ENTRIES".FStandardQuantity  
  120.   
  121.          ELSE  
  122.   
  123.           "ASSISTRECORDS".FStandardQuantity  
  124.   
  125.        END "ASSISTRECORDS.STANDARDQTY",  
  126.   
  127.        CASE  
  128.   
  129.          WHEN (("ACCOUNT".FCAA IS NULL) AND  
  130.   
  131.               ("ACCOUNT".FhasUserProperty <> 1)) THEN  
  132.   
  133.           "ENTRIES".FPrice  
  134.   
  135.          ELSE  
  136.   
  137.           "ASSISTRECORDS".FPrice  
  138.   
  139.        END "ASSISTRECORDS.PRICE",  
  140.   
  141.        CASE  
  142.   
  143.          WHEN ("ACCOUNT".FCAA IS NULL) THEN  
  144.   
  145.           NULL  
  146.   
  147.          ELSE  
  148.   
  149.           "ASSISTRECORDS".FAssGrpID  
  150.   
  151.        END "ASSGRP.ID"  
  152.   
  153.   FROM T_GL_Voucher "VOUCHER"  
  154.   
  155.   LEFT OUTER JOIN T_BD_Period "PERIOD"  
  156.   
  157.     ON "VOUCHER".FPeriodID = "PERIOD".FID  
  158.   
  159.  INNER JOIN T_GL_VoucherEntry "ENTRIES"  
  160.   
  161.     ON "VOUCHER".FID = "ENTRIES".FBillID  
  162.   
  163.  INNER JOIN T_BD_AccountView "ACCOUNT"  
  164.   
  165.     ON "ENTRIES".FAccountID = "ACCOUNT".FID  
  166.   
  167.   LEFT OUTER JOIN T_GL_VoucherAssistRecord "ASSISTRECORDS"  
  168.   
  169.     ON "ENTRIES".FID = "ASSISTRECORDS".FEntryID  
  170.   
  171.  WHERE "VOUCHER".FID IN  
  172.   
  173.        (select id from x)  
  174.   
  175.  ORDER BY "ID" ASC, "ENTRIES.SEQ" ASC, "ASSISTRECORDS.SEQ" ASC  
  176.   
  177.    
  178.   
  179. ---======执行计划  
  180.   
  181. ------------------------------------------------------------------------------------------------------  
  182.   
  183. | Id  | Operation                         | Name                        | Rows  | Bytes | Cost (%CPU)|  
  184.   
  185. ------------------------------------------------------------------------------------------------------  
  186.   
  187. |   0 | SELECT STATEMENT                  |                             |    24 | 11208 |   506   (1)|  
  188.   
  189. |   1 |  TEMP TABLE TRANSFORMATION        |                             |       |       |            |  
  190.   
  191. |   2 |   LOAD AS SELECT                  | SYS_TEMP_0FD9D6853_1AD5C99D |       |       |            |  
  192.   
  193. |   3 |    HASH JOIN                      |                             |     1 |   415 |   458   (1)|  
  194.   
  195. |   4 |     NESTED LOOPS                  |                             |       |       |            |  
  196.   
  197. |   5 |      NESTED LOOPS                 |                             |   258 | 83850 |   390   (0)|  
  198.   
  199. |   6 |       NESTED LOOPS                |                             |     6 |  1332 |     3   (0)|  
  200.   
  201. |   7 |        TABLE ACCESS BY INDEX ROWID| T_BD_ACCOUNTVIEW            |     1 |   111 |     2   (0)|  
  202.   
  203. |   8 |         INDEX UNIQUE SCAN         | PK_BD_ACCOUNTVIEW           |     1 |       |     1   (0)|  
  204.   
  205. |   9 |        INDEX RANGE SCAN           | IX_BD_ACTCOMLNUM            |     6 |   666 |     1   (0)|  
  206.   
  207. |  10 |       INDEX RANGE SCAN            | IX_GL_VCHAACCT              |   489 |       |     1   (0)|  
  208.   
  209. |  11 |      TABLE ACCESS BY INDEX ROWID  | T_GL_VOUCHERENTRY           |    42 |  4326 |    65   (0)|  
  210.   
  211. |  12 |     INDEX RANGE SCAN              | IX_GL_VCH_11                |  7536 |   662K|    68   (0)|  
  212.   
  213. |  13 |   SORT ORDER BY                   |                             |    24 | 11208 |    48   (5)|  
  214.   
  215. |  14 |    NESTED LOOPS OUTER             |                             |    24 | 11208 |    47   (3)|  
  216.   
  217. |  15 |     NESTED LOOPS                  |                             |    17 |  6086 |    21   (5)|  
  218.   
  219. |  16 |      NESTED LOOPS                 |                             |    17 |  5253 |    13   (8)|  
  220.   
  221. |  17 |       NESTED LOOPS OUTER          |                             |     1 |   121 |     5  (20)|  
  222.   
  223. |  18 |        NESTED LOOPS               |                             |     1 |    87 |     4  (25)|  
  224.   
  225. |  19 |         VIEW                      | VW_NSO_1                    |     1 |    29 |     2   (0)|  
  226.   
  227. |  20 |          HASH UNIQUE              |                             |     1 |    24 |            |  
  228.   
  229. |  21 |           VIEW                    |                             |     1 |    24 |     2   (0)|  
  230.   
  231. |  22 |            TABLE ACCESS FULL      | SYS_TEMP_0FD9D6853_1AD5C99D |     1 |    29 |     2   (0)|  
  232.   
  233. |  23 |         INDEX RANGE SCAN          | IX_GL_VCH_FIDCMPNUM         |     1 |    58 |     1   (0)|  
  234.   
  235. |  24 |        INDEX RANGE SCAN           | IX_PERIOD_ENC               |     1 |    34 |     1   (0)|  
  236.   
  237. |  25 |       TABLE ACCESS BY INDEX ROWID | T_GL_VOUCHERENTRY           |    17 |  3196 |     8   (0)|  
  238.   
  239. |  26 |        INDEX RANGE SCAN           | IX_GL_VCHENTRYFQ1           |    17 |       |     1   (0)|  
  240.   
  241. |  27 |      TABLE ACCESS BY INDEX ROWID  | T_BD_ACCOUNTVIEW            |     1 |    49 |     1   (0)|  
  242.   
  243. |  28 |       INDEX UNIQUE SCAN           | PK_BD_ACCOUNTVIEW           |     1 |       |     1   (0)|  
  244.   
  245. |  29 |     TABLE ACCESS BY INDEX ROWID   | T_GL_VOUCHERASSISTRECORD    |     1 |   109 |     2   (0)|  
  246.   
  247. |  30 |      INDEX RANGE SCAN             | IX_GL_VCHASSREC_11          |     2 |       |     1   (0)|  
  248.   
  249. ------------------------------------------------------------------------------------------------------  

最后 1分钟全部查询出来,42956条数据


其实这个sql 没有 优化彻底,如果真的要认真对待,大概30秒左右就能跑完 不过难得搞了

有sql 要优化 加我qq 692162374 或者 加 群  220761024

想要跟我学优化的,请点击这里


最后我才知道 这个哥们 18k了 现在 我操。。。。他跟我学了ORACLE sql优化大概4个月了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值