固定执行计划-使用coe_xfr_sql_profile

2024-01-26 23:40

本文主要是介绍固定执行计划-使用coe_xfr_sql_profile,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、历史执行计划固定

历史的执行计划找到一个合理的执行计划进行绑定

1. 存在多个执行计划的语句,按照索引是比较合适的,FULL SCAN不合适

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

select * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor('4hpk08j31nm7y',null))

 

SQL_ID  4hpk08j31nm7y, child number 0

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 1404472509

  

------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                  |       |       |     2 (100)|          |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP              |     6 |   228 |     2   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_EMP_DEPTNO |     6 |       |     1   (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - access("DEPTNO"=30)

  

SQL_ID  4hpk08j31nm7y, child number 1

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 3956160932

  

--------------------------------------------------------------------------

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------

|   0 | SELECT STATEMENT  |      |       |       |     3 (100)|          |

|*  1 |  TABLE ACCESS FULL| EMP  |     6 |   228 |     3   (0)| 00:00:01 |

--------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   1 - filter("DEPTNO"=30)

存在两个执行计划,使之后的SQL语句都走Plan hash value: 1404472509 处理模

2、运行coe_xfr_sql_profile脚本来绑定

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

sys@GULL> @coe_xfr_sql_profile.SQL

 

Parameter 1:

SQL_ID (required)

 

输入 1 的值:  4hpk08j31nm7y

 

 

PLAN_HASH_VALUE AVG_ET_SECS

--------------- -----------

     1404472509        .002

     3956160932        .015

 

Parameter 2:

PLAN_HASH_VALUE (required)

 

输入 2 的值:  1404472509

 

Values passed to coe_xfr_sql_profile:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL_ID         : "4hpk08j31nm7y"

PLAN_HASH_VALUE: "1404472509"

 

SQL>BEGIN

  2    IF :sql_text IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20100, 'SQL_TEXT for SQL_ID &&sql_id. was not found in memory (gv$sqltext_with_newlines) or AWR (dba_hist_sqltext).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

SQL>BEGIN

  2    IF :other_xml IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20101, 'PLAN for SQL_ID &&sql_id. and PHV &&plan_hash_value. was not found in memory (gv$sql_plan) or AWR (dba_hist_sql_plan).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

 

Execute coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql

on TARGET system in order to create a custom SQL Profile

with plan 1404472509 linked to adjusted sql_text.

 

 

COE_XFR_SQL_PROFILE completed.

 

sys@GULL> @coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql

sys@GULL> REM

sys@GULL> REM $Header: 215187.1 coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql 11.4.3.5 2016/06/20 carlos.sierra $

sys@GULL> REM

sys@GULL> REM Copyright (c) 2000-2011, Oracle Corporation. All rights reserved.

sys@GULL> REM

sys@GULL> REM AUTHOR

sys@GULL> REM   carlos.sierra@oracle.com

sys@GULL> REM

sys@GULL> REM SCRIPT

sys@GULL> REM   coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql

sys@GULL> REM

sys@GULL> REM DESCRIPTION

sys@GULL> REM   This script is generated by coe_xfr_sql_profile.sql

sys@GULL> REM   It contains the SQL*Plus commands to create a custom

sys@GULL> REM   SQL Profile for SQL_ID 4hpk08j31nm7y based on plan hash

sys@GULL> REM   value 1404472509.

sys@GULL> REM   The custom SQL Profile to be created by this script

sys@GULL> REM   will affect plans for SQL commands with signature

sys@GULL> REM   matching the one for SQL Text below.

sys@GULL> REM   Review SQL Text and adjust accordingly.

sys@GULL> REM

sys@GULL> REM PARAMETERS

sys@GULL> REM   None.

sys@GULL> REM

sys@GULL> REM EXAMPLE

sys@GULL> REM   SQL> START coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql;

sys@GULL> REM

sys@GULL> REM NOTES

sys@GULL> REM   1. Should be run as SYSTEM or SYSDBA.

sys@GULL> REM   2. User must have CREATE ANY SQL PROFILE privilege.

sys@GULL> REM   3. SOURCE and TARGET systems can be the same or similar.

sys@GULL> REM   4. To drop this custom SQL Profile after it has been created:

sys@GULL> REM      EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE('coe_4hpk08j31nm7y_1404472509');

sys@GULL> REM   5. Be aware that using DBMS_SQLTUNE requires a license

sys@GULL> REM      for the Oracle Tuning Pack.

sys@GULL> REM

sys@GULL> WHENEVER SQLERROR EXIT SQL.SQLCODE;

sys@GULL> REM

sys@GULL> VAR signature NUMBER;

sys@GULL> REM

sys@GULL> DECLARE

  2  sql_txt CLOB;

  3  h       SYS.SQLPROF_ATTR;

  BEGIN

  5  sql_txt := q'[

  6  select * from  scott.emp  where deptno=30

  7  ]';

  8  h := SYS.SQLPROF_ATTR(

  9  q'[BEGIN_OUTLINE_DATA]',

 10  q'[IGNORE_OPTIM_EMBEDDED_HINTS]',

 11  q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]',

 12  q'[DB_VERSION('11.2.0.3')]',

 13  q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]',

 14  q'[ALL_ROWS]',

 15  q'[OUTLINE_LEAF(@"SEL$1")]',

 16  q'[INDEX_RS_ASC(@"SEL$1" "EMP"@"SEL$1" ("EMP"."DEPTNO"))]',

 17  q'[END_OUTLINE_DATA]');

 18  :signature := DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(sql_txt);

 19  DBMS_SQLTUNE.IMPORT_SQL_PROFILE (

 20  sql_text    => sql_txt,

 21  profile     => h,

 22  name        => 'coe_4hpk08j31nm7y_1404472509',

 23  description => 'coe 4hpk08j31nm7y 1404472509 '||:signature||'',

 24  category    => 'DEFAULT',

 25  validate    => TRUE,

 26  replace     => TRUE,

 27  force_match => FALSE /* TRUE:FORCE (match even when different literals in SQL). FALSE:EXACT (similar to CURSOR_SHARING) */ );

 28  END;

 29  /

 

PL/SQL 过程已成功完成。

 

sys@GULL> WHENEVER SQLERROR CONTINUE

sys@GULL> SET ECHO OFF;

 

            SIGNATURE

---------------------

  7148830044791940844

 

 

... manual custom SQL Profile has been created

 

 

COE_XFR_SQL_PROFILE_4hpk08j31nm7y_1404472509 completed

执行COE_XFR_SQL_PROFILE_4hpk08j31nm7y_1404472509

3、再此重新执行语句

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

select * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor(null,null))

 

SQL_ID  4hpk08j31nm7y, child number 2

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 1404472509

  

------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                  |       |       |    10 (100)|          |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP              |     6 |   228 |    10   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_EMP_DEPTNO |     6 |       |     5   (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - access("DEPTNO"=30)

  

Note

-----

   - SQL profile coe_4hpk08j31nm7y_1404472509 used for this statement

SQL profile coe_4hpk08j31nm7y_1404472509 used for this statement,说明sql profile已经绑定上,执行计划已这个为最佳,为止绑定处理

 

二、自己来构造合理的执行计划

1、构造执行计划

以下例子中sql语句走的是全表扫描,没有走索引,构造一个走索引的语句,来替换全表扫描执行计划

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

alter session set optimizer_index_cost_adj=500

 

select * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor(null,null))

 

SQL_ID  4hpk08j31nm7y, child number 0

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 3956160932

  

--------------------------------------------------------------------------

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------

|   0 | SELECT STATEMENT  |      |       |       |     3 (100)|          |

|*  1 |  TABLE ACCESS FULL| EMP  |     6 |   228 |     3   (0)| 00:00:01 |

--------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   1 - filter("DEPTNO"=30)

执行现存在的coe_xfr_sql_profile

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

sys@GULL> @coe_xfr_sql_profile.SQL

 

Parameter 1:

SQL_ID (required)

 

输入 1 的值:  4hpk08j31nm7y

 

 

PLAN_HASH_VALUE AVG_ET_SECS

--------------- -----------

     3956160932        .041

 

Parameter 2:

PLAN_HASH_VALUE (required)

 

输入 2 的值:  3956160932

 

Values passed to coe_xfr_sql_profile:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL_ID         : "4hpk08j31nm7y"

PLAN_HASH_VALUE: "3956160932 "

 

SQL>BEGIN

  2    IF :sql_text IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20100, 'SQL_TEXT for SQL_ID &&sql_id. was not found in memory (gv$sqltext_with_newlines) or AWR (dba_hist_sqltext).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

SQL>BEGIN

  2    IF :other_xml IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20101, 'PLAN for SQL_ID &&sql_id. and PHV &&plan_hash_value. was not found in memory (gv$sql_plan) or AWR (dba_hist_sql_plan).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

 

Execute coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql

on TARGET system in order to create a custom SQL Profile

with plan 3956160932 linked to adjusted sql_text.

 

 

COE_XFR_SQL_PROFILE completed.

查看构造SQL的走索引执行计划coe_xfr_sql_profile

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

select /*+index(emp index_emp_deptno)*/ * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor(null,null))

 

SQL_ID  2hdyvqk9b09va, child number 0

-------------------------------------

select /*+index(emp index_emp_deptno)*/ * from  scott.emp  where

deptno=30

  

Plan hash value: 1404472509

  

------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                  |       |       |    10 (100)|          |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP              |     6 |   228 |    10   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_EMP_DEPTNO |     6 |       |     5   (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - access("DEPTNO"=30)

查看次构造SQL的coe_xfr_sql_profile

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

SQL>@coe_xfr_sql_profile.SQL 2hdyvqk9b09va

 

Parameter 1:

SQL_ID (required)

 

 

 

PLAN_HASH_VALUE AVG_ET_SECS

--------------- -----------

     1404472509        .001

 

Parameter 2:

PLAN_HASH_VALUE (required)

 

输入 2 的值:  1404472509

 

Values passed to coe_xfr_sql_profile:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL_ID         : "2hdyvqk9b09va"

PLAN_HASH_VALUE: "1404472509"

 

SQL>BEGIN

  2    IF :sql_text IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20100, 'SQL_TEXT for SQL_ID &&sql_id. was not found in memory (gv$sqltext_with_newlines) or AWR (dba_hist_sqltext).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

SQL>BEGIN

  2    IF :other_xml IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20101, 'PLAN for SQL_ID &&sql_id. and PHV &&plan_hash_value. was not found in memory (gv$sql_plan) or AWR (dba_hist_sql_plan).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

 

Execute coe_xfr_sql_profile_2hdyvqk9b09va_1404472509.sql

on TARGET system in order to create a custom SQL Profile

with plan 1404472509 linked to adjusted sql_text.

 

 

COE_XFR_SQL_PROFILE completed.

2、替换outline data

查看coe_xfr_sql_profile_2hdyvqk9b09va_1404472509.sql信息,需要替换的是这段内容

复制代码

h := SYS.SQLPROF_ATTR(
q'[BEGIN_OUTLINE_DATA]',
q'[IGNORE_OPTIM_EMBEDDED_HINTS]',
q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]',
q'[DB_VERSION('11.2.0.3')]',
q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]',
q'[OPT_PARAM('optimizer_index_cost_adj' 500)]',
q'[ALL_ROWS]',
q'[OUTLINE_LEAF(@"SEL$1")]',
q'[INDEX_RS_ASC(@"SEL$1" "EMP"@"SEL$1" ("EMP"."DEPTNO"))]',
q'[END_OUTLINE_DATA]');

复制代码

把这个内容替换到coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql 中

复制代码

h := SYS.SQLPROF_ATTR(
q'[BEGIN_OUTLINE_DATA]',
q'[IGNORE_OPTIM_EMBEDDED_HINTS]',
q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]',
q'[DB_VERSION('11.2.0.3')]',
q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]',
q'[OPT_PARAM('optimizer_index_cost_adj' 500)]',
q'[ALL_ROWS]',
q'[OUTLINE_LEAF(@"SEL$1")]',
q'[FULL(@"SEL$1" "EMP"@"SEL$1")]',
q'[END_OUTLINE_DATA]');

复制代码

这段信息后,执行coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql 这个脚本

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

SQL>@coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql

SQL>REM

SQL>REM $Header: 215187.1 coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql 11.4.3.5 2016/06/20 carlos.sierra $

SQL>REM

SQL>REM Copyright (c) 2000-2011, Oracle Corporation. All rights reserved.

SQL>REM

SQL>REM AUTHOR

SQL>REM   carlos.sierra@oracle.com

SQL>REM

SQL>REM SCRIPT

SQL>REM   coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql

SQL>REM

SQL>REM DESCRIPTION

SQL>REM   This script is generated by coe_xfr_sql_profile.sql

SQL>REM   It contains the SQL*Plus commands to create a custom

SQL>REM   SQL Profile for SQL_ID 4hpk08j31nm7y based on plan hash

SQL>REM   value 3956160932.

SQL>REM   The custom SQL Profile to be created by this script

SQL>REM   will affect plans for SQL commands with signature

SQL>REM   matching the one for SQL Text below.

SQL>REM   Review SQL Text and adjust accordingly.

SQL>REM

SQL>REM PARAMETERS

SQL>REM   None.

SQL>REM

SQL>REM EXAMPLE

SQL>REM   SQL> START coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql;

SQL>REM

SQL>REM NOTES

SQL>REM   1. Should be run as SYSTEM or SYSDBA.

SQL>REM   2. User must have CREATE ANY SQL PROFILE privilege.

SQL>REM   3. SOURCE and TARGET systems can be the same or similar.

SQL>REM   4. To drop this custom SQL Profile after it has been created:

SQL>REM  EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE('coe_4hpk08j31nm7y_3956160932');

SQL>REM   5. Be aware that using DBMS_SQLTUNE requires a license

SQL>REM  for the Oracle Tuning Pack.

SQL>REM

SQL>WHENEVER SQLERROR EXIT SQL.SQLCODE;

SQL>REM

SQL>VAR signature NUMBER;

SQL>REM

SQL>DECLARE

  2  sql_txt CLOB;

  3  h       SYS.SQLPROF_ATTR;

  BEGIN

  5  sql_txt := q'[

  6  select * from  scott.emp  where deptno=30

  7  ]';

  8  h := SYS.SQLPROF_ATTR(

  9  q'[BEGIN_OUTLINE_DATA]',

 10  q'[IGNORE_OPTIM_EMBEDDED_HINTS]',

 11  q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]',

 12  q'[DB_VERSION('11.2.0.3')]',

 13  q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]',

 14  q'[OPT_PARAM('optimizer_index_cost_adj' 500)]',

 15  q'[ALL_ROWS]',

 16  q'[OUTLINE_LEAF(@"SEL$1")]',

 17  q'[INDEX_RS_ASC(@"SEL$1" "EMP"@"SEL$1" ("EMP"."DEPTNO"))]',

 18  q'[END_OUTLINE_DATA]');

 19  :signature := DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(sql_txt);

 20  DBMS_SQLTUNE.IMPORT_SQL_PROFILE (

 21  sql_text    => sql_txt,

 22  profile     => h,

 23  name        => 'coe_4hpk08j31nm7y_3956160932',

 24  description => 'coe 4hpk08j31nm7y 3956160932 '||:signature||'',

 25  category    => 'DEFAULT',

 26  validate    => TRUE,

 27  replace     => TRUE,

 28  force_match => FALSE /* TRUE:FORCE (match even when different literals in SQL). FALSE:EXACT (similar to CURSOR_SHARING) */ );

 29  END;

 30  /

 

PL/SQL 过程已成功完成。

 

SQL>WHENEVER SQLERROR CONTINUE

SQL>SET ECHO OFF;

 

            SIGNATURE

---------------------

  7148830044791940844

 

 

... manual custom SQL Profile has been created

 

 

COE_XFR_SQL_PROFILE_4hpk08j31nm7y_3956160932 completed

3、再次语句查看执行计划

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

select * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor(null,null))

 

SQL_ID  4hpk08j31nm7y, child number 0

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 1404472509

  

------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                  |       |       |    10 (100)|          |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP              |     6 |   228 |    10   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_EMP_DEPTNO |     6 |       |     5   (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - access("DEPTNO"=30)

  

Note

-----

   - SQL profile coe_4hpk08j31nm7y_3956160932 used for this statement

偷梁换柱成功,固定执行so easy

提供脚本文件COE_XFR_SQL_PROFILE.SQL

 COE_XFR_SQL_PROFILE

参考《基于SQL的优化》

这篇关于固定执行计划-使用coe_xfr_sql_profile的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/viviliving/article/details/108282712
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/648413

相关文章

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

Mysql表如何按照日期字段的年月分区

《Mysql表如何按照日期字段的年月分区》:本文主要介绍Mysql表如何按照日期字段的年月分区的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、创键表时直接设置分区二、已有表分区1、分区的前置条件2、分区操作三、验证四、注意总结一、创键表时直接设置分区

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.