如何查询mysql中执行效率低的sql语句 如何查询mysql中执行效率低的sql语句

\u5982\u4f55\u67e5\u8be2mysql\u4e2d\u6267\u884c\u6548\u7387\u4f4e\u7684sql\u8bed\u53e5

\u4e00\u3001MySQL\u6570\u636e\u5e93\u6709\u51e0\u4e2a\u914d\u7f6e\u9009\u9879\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u53ca\u65f6\u6355\u83b7\u4f4e\u6548SQL\u8bed\u53e5

1\uff0cslow_query_log
\u8fd9\u4e2a\u53c2\u6570\u8bbe\u7f6e\u4e3aON\uff0c\u53ef\u4ee5\u6355\u83b7\u6267\u884c\u65f6\u95f4\u8d85\u8fc7\u4e00\u5b9a\u6570\u503c\u7684SQL\u8bed\u53e5\u3002

2\uff0clong_query_time
\u5f53SQL\u8bed\u53e5\u6267\u884c\u65f6\u95f4\u8d85\u8fc7\u6b64\u6570\u503c\u65f6\uff0c\u5c31\u4f1a\u88ab\u8bb0\u5f55\u5230\u65e5\u5fd7\u4e2d\uff0c\u5efa\u8bae\u8bbe\u7f6e\u4e3a1\u6216\u8005\u66f4\u77ed\u3002

3\uff0cslow_query_log_file
\u8bb0\u5f55\u65e5\u5fd7\u7684\u6587\u4ef6\u540d\u3002

4\uff0clog_queries_not_using_indexes
\u8fd9\u4e2a\u53c2\u6570\u8bbe\u7f6e\u4e3aON\uff0c\u53ef\u4ee5\u6355\u83b7\u5230\u6240\u6709\u672a\u4f7f\u7528\u7d22\u5f15\u7684SQL\u8bed\u53e5\uff0c\u5c3d\u7ba1\u8fd9\u4e2aSQL\u8bed\u53e5\u6709\u53ef\u80fd\u6267\u884c\u5f97\u633a\u5feb\u3002

\u4e8c\u3001\u68c0\u6d4bmysql\u4e2dsql\u8bed\u53e5\u7684\u6548\u7387\u7684\u65b9\u6cd5

1\u3001\u901a\u8fc7\u67e5\u8be2\u65e5\u5fd7
\uff081\uff09\u3001Windows\u4e0b\u5f00\u542fMySQL\u6162\u67e5\u8be2
MySQL\u5728Windows\u7cfb\u7edf\u4e2d\u7684\u914d\u7f6e\u6587\u4ef6\u4e00\u822c\u662f\u662fmy.ini\u627e\u5230[mysqld]\u4e0b\u9762\u52a0\u4e0a
\u4ee3\u7801\u5982\u4e0b
log-slow-queries = F:/MySQL/log/mysqlslowquery\u3002log
long_query_time = 2

\uff082\uff09\u3001Linux\u4e0b\u542f\u7528MySQL\u6162\u67e5\u8be2
MySQL\u5728Windows\u7cfb\u7edf\u4e2d\u7684\u914d\u7f6e\u6587\u4ef6\u4e00\u822c\u662f\u662fmy.cnf\u627e\u5230[mysqld]\u4e0b\u9762\u52a0\u4e0a
\u4ee3\u7801\u5982\u4e0b
log-slow-queries=/data/mysqldata/slowquery\u3002log
long_query_time=2
\u8bf4\u660e
log-slow-queries = F:/MySQL/log/mysqlslowquery\u3002
\u4e3a\u6162\u67e5\u8be2\u65e5\u5fd7\u5b58\u653e\u7684\u4f4d\u7f6e\uff0c\u4e00\u822c\u8fd9\u4e2a\u76ee\u5f55\u8981\u6709MySQL\u7684\u8fd0\u884c\u5e10\u53f7\u7684\u53ef\u5199\u6743\u9650\uff0c\u4e00\u822c\u90fd\u5c06\u8fd9\u4e2a\u76ee\u5f55\u8bbe\u7f6e\u4e3aMySQL\u7684\u6570\u636e\u5b58\u653e\u76ee\u5f55\uff1b
long_query_time=2\u4e2d\u76842\u8868\u793a\u67e5\u8be2\u8d85\u8fc7\u4e24\u79d2\u624d\u8bb0\u5f55\uff1b

2.show processlist \u547d\u4ee4

SHOW PROCESSLIST\u663e\u793a\u54ea\u4e9b\u7ebf\u7a0b\u6b63\u5728\u8fd0\u884c\u3002\u60a8\u4e5f\u53ef\u4ee5\u4f7f\u7528mysqladmin processlist\u8bed\u53e5\u5f97\u5230\u6b64\u4fe1\u606f\u3002
\u5404\u5217\u7684\u542b\u4e49\u548c\u7528\u9014\uff1a
ID\u5217
\u4e00\u4e2a\u6807\u8bc6\uff0c\u4f60\u8981kill\u4e00\u4e2a\u8bed\u53e5\u7684\u65f6\u5019\u5f88\u6709\u7528\uff0c\u7528\u547d\u4ee4\u6740\u6389\u6b64\u67e5\u8be2 /*/mysqladmin kill \u8fdb\u7a0b\u53f7\u3002
user\u5217
\u663e\u793a\u5355\u524d\u7528\u6237\uff0c\u5982\u679c\u4e0d\u662froot\uff0c\u8fd9\u4e2a\u547d\u4ee4\u5c31\u53ea\u663e\u793a\u4f60\u6743\u9650\u8303\u56f4\u5185\u7684sql\u8bed\u53e5\u3002
host\u5217
\u663e\u793a\u8fd9\u4e2a\u8bed\u53e5\u662f\u4ece\u54ea\u4e2aip\u7684\u54ea\u4e2a\u7aef\u53e3\u4e0a\u53d1\u51fa\u7684\u3002\u7528\u4e8e\u8ffd\u8e2a\u51fa\u95ee\u9898\u8bed\u53e5\u7684\u7528\u6237\u3002
db\u5217
\u663e\u793a\u8fd9\u4e2a\u8fdb\u7a0b\u76ee\u524d\u8fde\u63a5\u7684\u662f\u54ea\u4e2a\u6570\u636e\u5e93\u3002
command\u5217
\u663e\u793a\u5f53\u524d\u8fde\u63a5\u7684\u6267\u884c\u7684\u547d\u4ee4\uff0c\u4e00\u822c\u5c31\u662f\u4f11\u7720\uff08sleep\uff09\uff0c\u67e5\u8be2\uff08query\uff09\uff0c\u8fde\u63a5\uff08connect\uff09\u3002
time\u5217
\u6b64\u8fd9\u4e2a\u72b6\u6001\u6301\u7eed\u7684\u65f6\u95f4\uff0c\u5355\u4f4d\u662f\u79d2\u3002
state\u5217
\u663e\u793a\u4f7f\u7528\u5f53\u524d\u8fde\u63a5\u7684sql\u8bed\u53e5\u7684\u72b6\u6001\uff0c\u5f88\u91cd\u8981\u7684\u5217\uff0c\u540e\u7eed\u4f1a\u6709\u6240\u6709\u7684\u72b6\u6001\u7684\u63cf\u8ff0\uff0c\u8bf7\u6ce8\u610f\uff0cstate\u53ea\u662f\u8bed\u53e5\u6267\u884c\u4e2d\u7684\u67d0\u4e00\u4e2a\u72b6\u6001\uff0c\u4e00\u4e2a sql\u8bed\u53e5\uff0c\u4ee5\u67e5\u8be2\u4e3a\u4f8b\uff0c\u53ef\u80fd\u9700\u8981\u7ecf\u8fc7copying to tmp table\uff0cSorting result\uff0cSending data\u7b49\u72b6\u6001\u624d\u53ef\u4ee5\u5b8c\u6210
info\u5217
\u663e\u793a\u8fd9\u4e2asql\u8bed\u53e5\uff0c\u56e0\u4e3a\u957f\u5ea6\u6709\u9650\uff0c\u6240\u4ee5\u957f\u7684sql\u8bed\u53e5\u5c31\u663e\u793a\u4e0d\u5168\uff0c\u4f46\u662f\u4e00\u4e2a\u5224\u65ad\u95ee\u9898\u8bed\u53e5\u7684\u91cd\u8981\u4f9d\u636e\u3002

\u8fd9\u4e2a\u547d\u4ee4\u4e2d\u6700\u5173\u952e\u7684\u5c31\u662fstate\u5217\uff0cmysql\u5217\u51fa\u7684\u72b6\u6001\u4e3b\u8981\u6709\u4ee5\u4e0b\u51e0\u79cd\uff1a
Checking table
\u3000\u6b63\u5728\u68c0\u67e5\u6570\u636e\u8868\uff08\u8fd9\u662f\u81ea\u52a8\u7684\uff09\u3002
Closing tables
\u3000\u6b63\u5728\u5c06\u8868\u4e2d\u4fee\u6539\u7684\u6570\u636e\u5237\u65b0\u5230\u78c1\u76d8\u4e2d\uff0c\u540c\u65f6\u6b63\u5728\u5173\u95ed\u5df2\u7ecf\u7528\u5b8c\u7684\u8868\u3002\u8fd9\u662f\u4e00\u4e2a\u5f88\u5feb\u7684\u64cd\u4f5c\uff0c\u5982\u679c\u4e0d\u662f\u8fd9\u6837\u7684\u8bdd\uff0c\u5c31\u5e94\u8be5\u786e\u8ba4\u78c1\u76d8\u7a7a\u95f4\u662f\u5426\u5df2\u7ecf\u6ee1\u4e86\u6216\u8005\u78c1\u76d8\u662f\u5426\u6b63\u5904\u4e8e\u91cd\u8d1f\u4e2d\u3002
Connect Out
\u3000\u590d\u5236\u4ece\u670d\u52a1\u5668\u6b63\u5728\u8fde\u63a5\u4e3b\u670d\u52a1\u5668\u3002

Copying to tmp table on disk
\u3000\u7531\u4e8e\u4e34\u65f6\u7ed3\u679c\u96c6\u5927\u4e8etmp_table_size\uff0c\u6b63\u5728\u5c06\u4e34\u65f6\u8868\u4ece\u5185\u5b58\u5b58\u50a8\u8f6c\u4e3a\u78c1\u76d8\u5b58\u50a8\u4ee5\u6b64\u8282\u7701\u5185\u5b58\u3002
Creating tmp table
\u3000\u6b63\u5728\u521b\u5efa\u4e34\u65f6\u8868\u4ee5\u5b58\u653e\u90e8\u5206\u67e5\u8be2\u7ed3\u679c\u3002
deleting from main table
\u3000\u670d\u52a1\u5668\u6b63\u5728\u6267\u884c\u591a\u8868\u5220\u9664\u4e2d\u7684\u7b2c\u4e00\u90e8\u5206\uff0c\u521a\u5220\u9664\u7b2c\u4e00\u4e2a\u8868\u3002
deleting from reference tables
\u3000\u670d\u52a1\u5668\u6b63\u5728\u6267\u884c\u591a\u8868\u5220\u9664\u4e2d\u7684\u7b2c\u4e8c\u90e8\u5206\uff0c\u6b63\u5728\u5220\u9664\u5176\u4ed6\u8868\u7684\u8bb0\u5f55\u3002

Flushing tables
\u3000\u6b63\u5728\u6267\u884cFLUSH TABLES\uff0c\u7b49\u5f85\u5176\u4ed6\u7ebf\u7a0b\u5173\u95ed\u6570\u636e\u8868\u3002
Killed
\u3000\u53d1\u9001\u4e86\u4e00\u4e2akill\u8bf7\u6c42\u7ed9\u67d0\u7ebf\u7a0b\uff0c\u90a3\u4e48\u8fd9\u4e2a\u7ebf\u7a0b\u5c06\u4f1a\u68c0\u67e5kill\u6807\u5fd7\u4f4d\uff0c\u540c\u65f6\u4f1a\u653e\u5f03\u4e0b\u4e00\u4e2akill\u8bf7\u6c42\u3002MySQL\u4f1a\u5728\u6bcf\u6b21\u7684\u4e3b\u5faa\u73af\u4e2d\u68c0\u67e5kill\u6807\u5fd7\u4f4d\uff0c\u4e0d\u8fc7\u6709\u4e9b\u60c5\u51b5\u4e0b\u8be5\u7ebf\u7a0b\u53ef\u80fd\u4f1a\u8fc7\u4e00\u5c0f\u6bb5\u624d\u80fd\u6b7b\u6389\u3002\u5982\u679c\u8be5\u7ebf\u7a0b\u7a0b\u88ab\u5176\u4ed6\u7ebf\u7a0b\u9501\u4f4f\u4e86\uff0c\u90a3\u4e48kill\u8bf7\u6c42\u4f1a\u5728\u9501\u91ca\u653e\u65f6\u9a6c\u4e0a\u751f\u6548\u3002
Locked
\u3000\u88ab\u5176\u4ed6\u67e5\u8be2\u9501\u4f4f\u4e86\u3002
Sending data
\u3000\u6b63\u5728\u5904\u7406SELECT\u67e5\u8be2\u7684\u8bb0\u5f55\uff0c\u540c\u65f6\u6b63\u5728\u628a\u7ed3\u679c\u53d1\u9001\u7ed9\u5ba2\u6237\u7aef\u3002

Sorting for group
\u3000\u6b63\u5728\u4e3aGROUP BY\u505a\u6392\u5e8f\u3002
\u3000Sorting for order
\u3000\u6b63\u5728\u4e3aORDER BY\u505a\u6392\u5e8f\u3002
Opening tables
\u3000\u8fd9\u4e2a\u8fc7\u7a0b\u5e94\u8be5\u4f1a\u5f88\u5feb\uff0c\u9664\u975e\u53d7\u5230\u5176\u4ed6\u56e0\u7d20\u7684\u5e72\u6270\u3002\u4f8b\u5982\uff0c\u5728\u6267ALTER TABLE\u6216LOCK TABLE\u8bed\u53e5\u884c\u5b8c\u4ee5\u524d\uff0c\u6570\u636e\u8868\u65e0\u6cd5\u88ab\u5176\u4ed6\u7ebf\u7a0b\u6253\u5f00\u3002\u6b63\u5c1d\u8bd5\u6253\u5f00\u4e00\u4e2a\u8868\u3002
Removing duplicates
\u3000\u6b63\u5728\u6267\u884c\u4e00\u4e2aSELECT DISTINCT\u65b9\u5f0f\u7684\u67e5\u8be2\uff0c\u4f46\u662fMySQL\u65e0\u6cd5\u5728\u524d\u4e00\u4e2a\u9636\u6bb5\u4f18\u5316\u6389\u90a3\u4e9b\u91cd\u590d\u7684\u8bb0\u5f55\u3002\u56e0\u6b64\uff0cMySQL\u9700\u8981\u518d\u6b21\u53bb\u6389\u91cd\u590d\u7684\u8bb0\u5f55\uff0c\u7136\u540e\u518d\u628a\u7ed3\u679c\u53d1\u9001\u7ed9\u5ba2\u6237\u7aef\u3002

Reopen table
\u3000\u83b7\u5f97\u4e86\u5bf9\u4e00\u4e2a\u8868\u7684\u9501\uff0c\u4f46\u662f\u5fc5\u987b\u5728\u8868\u7ed3\u6784\u4fee\u6539\u4e4b\u540e\u624d\u80fd\u83b7\u5f97\u8fd9\u4e2a\u9501\u3002\u5df2\u7ecf\u91ca\u653e\u9501\uff0c\u5173\u95ed\u6570\u636e\u8868\uff0c\u6b63\u5c1d\u8bd5\u91cd\u65b0\u6253\u5f00\u6570\u636e\u8868\u3002
Repair by sorting
\u3000\u4fee\u590d\u6307\u4ee4\u6b63\u5728\u6392\u5e8f\u4ee5\u521b\u5efa\u7d22\u5f15\u3002
Repair with keycache
\u3000\u4fee\u590d\u6307\u4ee4\u6b63\u5728\u5229\u7528\u7d22\u5f15\u7f13\u5b58\u4e00\u4e2a\u4e00\u4e2a\u5730\u521b\u5efa\u65b0\u7d22\u5f15\u3002\u5b83\u4f1a\u6bd4Repair by sorting\u6162\u4e9b\u3002
Searching rows for update
\u3000\u6b63\u5728\u8bb2\u7b26\u5408\u6761\u4ef6\u7684\u8bb0\u5f55\u627e\u51fa\u6765\u4ee5\u5907\u66f4\u65b0\u3002\u5b83\u5fc5\u987b\u5728UPDATE\u8981\u4fee\u6539\u76f8\u5173\u7684\u8bb0\u5f55\u4e4b\u524d\u5c31\u5b8c\u6210\u4e86\u3002
Sleeping
\u3000\u6b63\u5728\u7b49\u5f85\u5ba2\u6237\u7aef\u53d1\u9001\u65b0\u8bf7\u6c42.

System lock
\u3000\u6b63\u5728\u7b49\u5f85\u53d6\u5f97\u4e00\u4e2a\u5916\u90e8\u7684\u7cfb\u7edf\u9501\u3002\u5982\u679c\u5f53\u524d\u6ca1\u6709\u8fd0\u884c\u591a\u4e2amysqld\u670d\u52a1\u5668\u540c\u65f6\u8bf7\u6c42\u540c\u4e00\u4e2a\u8868\uff0c\u90a3\u4e48\u53ef\u4ee5\u901a\u8fc7\u589e\u52a0--skip-external-locking\u53c2\u6570\u6765\u7981\u6b62\u5916\u90e8\u7cfb\u7edf\u9501\u3002
Upgrading lock
\u3000INSERT DELAYED\u6b63\u5728\u5c1d\u8bd5\u53d6\u5f97\u4e00\u4e2a\u9501\u8868\u4ee5\u63d2\u5165\u65b0\u8bb0\u5f55\u3002
Updating
\u3000\u6b63\u5728\u641c\u7d22\u5339\u914d\u7684\u8bb0\u5f55\uff0c\u5e76\u4e14\u4fee\u6539\u5b83\u4eec\u3002

User Lock
\u3000\u6b63\u5728\u7b49\u5f85GET_LOCK()\u3002
Waiting for tables
\u3000\u8be5\u7ebf\u7a0b\u5f97\u5230\u901a\u77e5\uff0c\u6570\u636e\u8868\u7ed3\u6784\u5df2\u7ecf\u88ab\u4fee\u6539\u4e86\uff0c\u9700\u8981\u91cd\u65b0\u6253\u5f00\u6570\u636e\u8868\u4ee5\u53d6\u5f97\u65b0\u7684\u7ed3\u6784\u3002\u7136\u540e\uff0c\u4e3a\u4e86\u80fd\u7684\u91cd\u65b0\u6253\u5f00\u6570\u636e\u8868\uff0c\u5fc5\u987b\u7b49\u5230\u6240\u6709\u5176\u4ed6\u7ebf\u7a0b\u5173\u95ed\u8fd9\u4e2a\u8868\u3002\u4ee5\u4e0b\u51e0\u79cd\u60c5\u51b5\u4e0b\u4f1a\u4ea7\u751f\u8fd9\u4e2a\u901a\u77e5\uff1aFLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE,\u6216OPTIMIZE TABLE\u3002
waiting for handler insert
\u3000INSERT DELAYED\u5df2\u7ecf\u5904\u7406\u5b8c\u4e86\u6240\u6709\u5f85\u5904\u7406\u7684\u63d2\u5165\u64cd\u4f5c\uff0c\u6b63\u5728\u7b49\u5f85\u65b0\u7684\u8bf7\u6c42\u3002
\u3000\u5927\u90e8\u5206\u72b6\u6001\u5bf9\u5e94\u5f88\u5feb\u7684\u64cd\u4f5c\uff0c\u53ea\u8981\u6709\u4e00\u4e2a\u7ebf\u7a0b\u4fdd\u6301\u540c\u4e00\u4e2a\u72b6\u6001\u597d\u51e0\u79d2\u949f\uff0c\u90a3\u4e48\u53ef\u80fd\u662f\u6709\u95ee\u9898\u53d1\u751f\u4e86\uff0c\u9700\u8981\u68c0\u67e5\u4e00\u4e0b\u3002
\u3000\u8fd8\u6709\u5176\u4ed6\u7684\u72b6\u6001\u6ca1\u5728\u4e0a\u9762\u4e2d\u5217\u51fa\u6765\uff0c\u4e0d\u8fc7\u5b83\u4eec\u5927\u90e8\u5206\u53ea\u662f\u5728\u67e5\u770b\u670d\u52a1\u5668\u662f\u5426\u6709\u5b58\u5728\u9519\u8bef\u662f\u624d\u7528\u5f97\u7740\u3002

\u4f8b\u5982\u5982\u56fe\uff1a

3\u3001explain\u6765\u4e86\u89e3SQL\u6267\u884c\u7684\u72b6\u6001
explain\u663e\u793a\u4e86mysql\u5982\u4f55\u4f7f\u7528\u7d22\u5f15\u6765\u5904\u7406select\u8bed\u53e5\u4ee5\u53ca\u8fde\u63a5\u8868\u3002\u53ef\u4ee5\u5e2e\u52a9\u9009\u62e9\u66f4\u597d\u7684\u7d22\u5f15\u548c\u5199\u51fa\u66f4\u4f18\u5316\u7684\u67e5\u8be2\u8bed\u53e5\u3002
\u4f7f\u7528\u65b9\u6cd5\uff0c\u5728select\u8bed\u53e5\u524d\u52a0\u4e0aexplain\u5c31\u53ef\u4ee5\u4e86\uff1a
\u4f8b\u5982\uff1a
explain select surname,first_name form a,b where a.id=b.id
\u7ed3\u679c\u5982\u56fe

EXPLAIN\u5217\u7684\u89e3\u91ca
table
\u663e\u793a\u8fd9\u4e00\u884c\u7684\u6570\u636e\u662f\u5173\u4e8e\u54ea\u5f20\u8868\u7684
type
\u8fd9\u662f\u91cd\u8981\u7684\u5217\uff0c\u663e\u793a\u8fde\u63a5\u4f7f\u7528\u4e86\u4f55\u79cd\u7c7b\u578b\u3002\u4ece\u6700\u597d\u5230\u6700\u5dee\u7684\u8fde\u63a5\u7c7b\u578b\u4e3aconst\u3001eq_reg\u3001ref\u3001range\u3001indexhe\u548cALL
possible_keys
\u663e\u793a\u53ef\u80fd\u5e94\u7528\u5728\u8fd9\u5f20\u8868\u4e2d\u7684\u7d22\u5f15\u3002\u5982\u679c\u4e3a\u7a7a\uff0c\u6ca1\u6709\u53ef\u80fd\u7684\u7d22\u5f15\u3002\u53ef\u4ee5\u4e3a\u76f8\u5173\u7684\u57df\u4eceWHERE\u8bed\u53e5\u4e2d\u9009\u62e9\u4e00\u4e2a\u5408\u9002\u7684\u8bed\u53e5
key
\u5b9e\u9645\u4f7f\u7528\u7684\u7d22\u5f15\u3002\u5982\u679c\u4e3aNULL\uff0c\u5219\u6ca1\u6709\u4f7f\u7528\u7d22\u5f15\u3002\u5f88\u5c11\u7684\u60c5\u51b5\u4e0b\uff0cMYSQL\u4f1a\u9009\u62e9\u4f18\u5316\u4e0d\u8db3\u7684\u7d22\u5f15\u3002\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u53ef\u4ee5\u5728SELECT\u8bed\u53e5 \u4e2d\u4f7f\u7528USE INDEX\uff08indexname\uff09\u6765\u5f3a\u5236\u4f7f\u7528\u4e00\u4e2a\u7d22\u5f15\u6216\u8005\u7528IGNORE INDEX\uff08indexname\uff09\u6765\u5f3a\u5236MYSQL\u5ffd\u7565\u7d22\u5f15
key_len
\u4f7f\u7528\u7684\u7d22\u5f15\u7684\u957f\u5ea6\u3002\u5728\u4e0d\u635f\u5931\u7cbe\u786e\u6027\u7684\u60c5\u51b5\u4e0b\uff0c\u957f\u5ea6\u8d8a\u77ed\u8d8a\u597d
ref
\u663e\u793a\u7d22\u5f15\u7684\u54ea\u4e00\u5217\u88ab\u4f7f\u7528\u4e86\uff0c\u5982\u679c\u53ef\u80fd\u7684\u8bdd\uff0c\u662f\u4e00\u4e2a\u5e38\u6570
rows
MYSQL\u8ba4\u4e3a\u5fc5\u987b\u68c0\u67e5\u7684\u7528\u6765\u8fd4\u56de\u8bf7\u6c42\u6570\u636e\u7684\u884c\u6570
Extra
\u5173\u4e8eMYSQL\u5982\u4f55\u89e3\u6790\u67e5\u8be2\u7684\u989d\u5916\u4fe1\u606f\u3002\u5c06\u5728\u88684.3\u4e2d\u8ba8\u8bba\uff0c\u4f46\u8fd9\u91cc\u53ef\u4ee5\u770b\u5230\u7684\u574f\u7684\u4f8b\u5b50\u662fUsing temporary\u548cUsing filesort\uff0c\u610f\u601dMYSQL\u6839\u672c\u4e0d\u80fd\u4f7f\u7528\u7d22\u5f15\uff0c\u7ed3\u679c\u662f\u68c0\u7d22\u4f1a\u5f88\u6162

extra\u5217\u8fd4\u56de\u7684\u63cf\u8ff0\u7684\u610f\u4e49
Distinct
\u4e00\u65e6MYSQL\u627e\u5230\u4e86\u4e0e\u884c\u76f8\u8054\u5408\u5339\u914d\u7684\u884c\uff0c\u5c31\u4e0d\u518d\u641c\u7d22\u4e86
Not exists
MYSQL\u4f18\u5316\u4e86LEFT JOIN\uff0c\u4e00\u65e6\u5b83\u627e\u5230\u4e86\u5339\u914dLEFT JOIN\u6807\u51c6\u7684\u884c\uff0c\u5c31\u4e0d\u518d\u641c\u7d22\u4e86
Range checked for each Record\uff08index map:#\uff09
\u6ca1\u6709\u627e\u5230\u7406\u60f3\u7684\u7d22\u5f15\uff0c\u56e0\u6b64\u5bf9\u4e8e\u4ece\u524d\u9762\u8868\u4e2d\u6765\u7684\u6bcf\u4e00\u4e2a\u884c\u7ec4\u5408\uff0cMYSQL\u68c0\u67e5\u4f7f\u7528\u54ea\u4e2a\u7d22\u5f15\uff0c\u5e76\u7528\u5b83\u6765\u4ece\u8868\u4e2d\u8fd4\u56de\u884c\u3002\u8fd9\u662f\u4f7f\u7528\u7d22\u5f15\u7684\u6700\u6162\u7684\u8fde\u63a5\u4e4b\u4e00
Using filesort
\u770b\u5230\u8fd9\u4e2a\u7684\u65f6\u5019\uff0c\u67e5\u8be2\u5c31\u9700\u8981\u4f18\u5316\u4e86\u3002MYSQL\u9700\u8981\u8fdb\u884c\u989d\u5916\u7684\u6b65\u9aa4\u6765\u53d1\u73b0\u5982\u4f55\u5bf9\u8fd4\u56de\u7684\u884c\u6392\u5e8f\u3002\u5b83\u6839\u636e\u8fde\u63a5\u7c7b\u578b\u4ee5\u53ca\u5b58\u50a8\u6392\u5e8f\u952e\u503c\u548c\u5339\u914d\u6761\u4ef6\u7684\u5168\u90e8\u884c\u7684\u884c\u6307\u9488\u6765\u6392\u5e8f\u5168\u90e8\u884c
Using index
\u5217\u6570\u636e\u662f\u4ece\u4ec5\u4ec5\u4f7f\u7528\u4e86\u7d22\u5f15\u4e2d\u7684\u4fe1\u606f\u800c\u6ca1\u6709\u8bfb\u53d6\u5b9e\u9645\u7684\u884c\u52a8\u7684\u8868\u8fd4\u56de\u7684\uff0c\u8fd9\u53d1\u751f\u5728\u5bf9\u8868\u7684\u5168\u90e8\u7684\u8bf7\u6c42\u5217\u90fd\u662f\u540c\u4e00\u4e2a\u7d22\u5f15\u7684\u90e8\u5206\u7684\u65f6\u5019
Using temporary
\u770b\u5230\u8fd9\u4e2a\u7684\u65f6\u5019\uff0c\u67e5\u8be2\u9700\u8981\u4f18\u5316\u4e86\u3002\u8fd9\u91cc\uff0cMYSQL\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u4e34\u65f6\u8868\u6765\u5b58\u50a8\u7ed3\u679c\uff0c\u8fd9\u901a\u5e38\u53d1\u751f\u5728\u5bf9\u4e0d\u540c\u7684\u5217\u96c6\u8fdb\u884cORDER BY\u4e0a\uff0c\u800c\u4e0d\u662fGROUP BY\u4e0a
Where used
\u4f7f\u7528\u4e86WHERE\u4ece\u53e5\u6765\u9650\u5236\u54ea\u4e9b\u884c\u5c06\u4e0e\u4e0b\u4e00\u5f20\u8868\u5339\u914d\u6216\u8005\u662f\u8fd4\u56de\u7ed9\u7528\u6237\u3002\u5982\u679c\u4e0d\u60f3\u8fd4\u56de\u8868\u4e2d\u7684\u5168\u90e8\u884c\uff0c\u5e76\u4e14\u8fde\u63a5\u7c7b\u578bALL\u6216index\uff0c\u8fd9\u5c31\u4f1a\u53d1\u751f\uff0c\u6216\u8005\u662f\u67e5\u8be2\u6709\u95ee\u9898\u4e0d\u540c\u8fde\u63a5\u7c7b\u578b\u7684\u89e3\u91ca\uff08\u6309\u7167\u6548\u7387\u9ad8\u4f4e\u7684\u987a\u5e8f\u6392\u5e8f\uff09
const
\u8868\u4e2d\u7684\u4e00\u4e2a\u8bb0\u5f55\u7684\u6700\u5927\u503c\u80fd\u591f\u5339\u914d\u8fd9\u4e2a\u67e5\u8be2\uff08\u7d22\u5f15\u53ef\u4ee5\u662f\u4e3b\u952e\u6216\u60df\u4e00\u7d22\u5f15\uff09\u3002\u56e0\u4e3a\u53ea\u6709\u4e00\u884c\uff0c\u8fd9\u4e2a\u503c\u5b9e\u9645\u5c31\u662f\u5e38\u6570\uff0c\u56e0\u4e3aMYSQL\u5148\u8bfb\u8fd9\u4e2a\u503c\u7136\u540e\u628a\u5b83\u5f53\u505a\u5e38\u6570\u6765\u5bf9\u5f85
eq_ref
\u5728\u8fde\u63a5\u4e2d\uff0cMYSQL\u5728\u67e5\u8be2\u65f6\uff0c\u4ece\u524d\u9762\u7684\u8868\u4e2d\uff0c\u5bf9\u6bcf\u4e00\u4e2a\u8bb0\u5f55\u7684\u8054\u5408\u90fd\u4ece\u8868\u4e2d\u8bfb\u53d6\u4e00\u4e2a\u8bb0\u5f55\uff0c\u5b83\u5728\u67e5\u8be2\u4f7f\u7528\u4e86\u7d22\u5f15\u4e3a\u4e3b\u952e\u6216\u60df\u4e00\u952e\u7684\u5168\u90e8\u65f6\u4f7f\u7528
ref
\u8fd9\u4e2a\u8fde\u63a5\u7c7b\u578b\u53ea\u6709\u5728\u67e5\u8be2\u4f7f\u7528\u4e86\u4e0d\u662f\u60df\u4e00\u6216\u4e3b\u952e\u7684\u952e\u6216\u8005\u662f\u8fd9\u4e9b\u7c7b\u578b\u7684\u90e8\u5206\uff08\u6bd4\u5982\uff0c\u5229\u7528\u6700\u5de6\u8fb9\u524d\u7f00\uff09\u65f6\u53d1\u751f\u3002\u5bf9\u4e8e\u4e4b\u524d\u7684\u8868\u7684\u6bcf\u4e00\u4e2a\u884c\u8054\u5408\uff0c\u5168\u90e8\u8bb0\u5f55\u90fd\u5c06\u4ece\u8868\u4e2d\u8bfb\u51fa\u3002\u8fd9\u4e2a\u7c7b\u578b\u4e25\u91cd\u4f9d\u8d56\u4e8e\u6839\u636e\u7d22\u5f15\u5339\u914d\u7684\u8bb0\u5f55\u591a\u5c11\u2014\u8d8a\u5c11\u8d8a\u597d
range
\u8fd9\u4e2a\u8fde\u63a5\u7c7b\u578b\u4f7f\u7528\u7d22\u5f15\u8fd4\u56de\u4e00\u4e2a\u8303\u56f4\u4e2d\u7684\u884c\uff0c\u6bd4\u5982\u4f7f\u7528>\u6216<\u67e5\u627e\u4e1c\u897f\u65f6\u53d1\u751f\u7684\u60c5\u51b5
index
\u8fd9\u4e2a\u8fde\u63a5\u7c7b\u578b\u5bf9\u524d\u9762\u7684\u8868\u4e2d\u7684\u6bcf\u4e00\u4e2a\u8bb0\u5f55\u8054\u5408\u8fdb\u884c\u5b8c\u5168\u626b\u63cf\uff08\u6bd4ALL\u66f4\u597d\uff0c\u56e0\u4e3a\u7d22\u5f15\u4e00\u822c\u5c0f\u4e8e\u8868\u6570\u636e\uff09
ALL
\u8fd9\u4e2a\u8fde\u63a5\u7c7b\u578b\u5bf9\u4e8e\u524d\u9762\u7684\u6bcf\u4e00\u4e2a\u8bb0\u5f55\u8054\u5408\u8fdb\u884c\u5b8c\u5168\u626b\u63cf\uff0c\u8fd9\u4e00\u822c\u6bd4\u8f83\u7cdf\u7cd5\uff0c\u5e94\u8be5\u5c3d\u91cf\u907f\u514d

\u67e5\u8be2mysql\u4e2d\u6267\u884c\u6548\u7387\u4f4e\u7684sql\u8bed\u53e5\u53ef\u4ee5\u4f7f\u7528MySQL \u81ea\u5e26 slow log \u7684\u5206\u6790\u5de5\u5177 mysqldumpslow\u3002slow log \u662f MySQL \u6839\u636e SQL \u8bed\u53e5\u7684\u6267\u884c\u65f6\u95f4\u8bbe\u5b9a\uff0c\u5199\u5165\u7684\u4e00\u4e2a\u6587\u4ef6\uff0c\u7528\u4e8e\u5206\u6790\u6267\u884c\u8f83\u6162\u7684\u8bed\u53e5\u3002
\u914d\u7f6e\u65b9\u6cd5\u5982\u4e0b\uff1a
1\u3001\u6253\u5f00mysql\u7684\u5b89\u88c5\u76ee\u5f55\uff0c\u627e\u5230my.cnf\u6587\u4ef6\uff0c\u5e76\u6253\u5f00\uff0c\u8f93\u5165\u4ee5\u4e0b\u914d\u7f6e\uff1a
log-slow-queries = [slow_query_log_filename]
\u5373\u53ef\u8bb0\u5f55\u8d85\u8fc7\u9ed8\u8ba4\u7684 10s \u6267\u884c\u65f6\u95f4\u7684 SQL \u8bed\u53e5\u3002
\u5982\u679c\u8981\u4fee\u6539\u9ed8\u8ba4\u8bbe\u7f6e\uff0c\u53ef\u4ee5\u6dfb\u52a0\uff1a
long_query_time = 5
\u8bbe\u5b9a\u4e3a 5s \u3002
2\u3001\u6267\u884csql\u7684\u8fc7\u7a0b\u4e2d\u7528explain\u6765\u4e86\u89e3SQL\u6267\u884c\u7684\u72b6\u6001\u3002
explain\u663e\u793a\u4e86mysql\u5982\u4f55\u4f7f\u7528\u7d22\u5f15\u6765\u5904\u7406select\u8bed\u53e5\u4ee5\u53ca\u8fde\u63a5\u8868\u3002\u53ef\u4ee5\u5e2e\u52a9\u9009\u62e9\u66f4\u597d\u7684\u7d22\u5f15\u548c\u5199\u51fa\u66f4\u4f18\u5316\u7684\u67e5\u8be2\u8bed\u53e5\u3002
\u4f7f\u7528\u65b9\u6cd5\uff0c\u5728select\u8bed\u53e5\u524d\u52a0\u4e0aexplain\u5c31\u53ef\u4ee5\u4e86\uff1a
\u5982\uff1aexplain select surname,first_name form a,b where a.id=b.id

一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句

1,slow_query_log
这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。

2,long_query_time
当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。

3,slow_query_log_file
记录日志的文件名。

4,log_queries_not_using_indexes
这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。

二、检测mysql中sql语句的效率的方法

1、通过查询日志
(1)、Windows下开启MySQL慢查询
MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上
代码如下
log-slow-queries = F:/MySQL/log/mysqlslowquery。log
long_query_time = 2

(2)、Linux下启用MySQL慢查询
MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上
代码如下
log-slow-queries=/data/mysqldata/slowquery。log
long_query_time=2
说明
log-slow-queries = F:/MySQL/log/mysqlslowquery。
为慢查询日志存放的位置,一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录;
long_query_time=2中的2表示查询超过两秒才记录;

2.show processlist 命令

SHOW PROCESSLIST显示哪些线程正在运行。您也可以使用mysqladmin processlist语句得到此信息。
各列的含义和用途:
ID列
一个标识,你要kill一个语句的时候很有用,用命令杀掉此查询 /*/mysqladmin kill 进程号。
user列
显示单前用户,如果不是root,这个命令就只显示你权限范围内的sql语句。
host列
显示这个语句是从哪个ip的哪个端口上发出的。用于追踪出问题语句的用户。
db列
显示这个进程目前连接的是哪个数据库。
command列
显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect)。
time列
此这个状态持续的时间,单位是秒。
state列
显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,一个 sql语句,以查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成
info列
显示这个sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。

这个命令中最关键的就是state列,mysql列出的状态主要有以下几种:
Checking table
 正在检查数据表(这是自动的)。
Closing tables
 正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这是一个很快的操作,如果不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处于重负中。
Connect Out
 复制从服务器正在连接主服务器。

Copying to tmp table on disk
 由于临时结果集大于tmp_table_size,正在将临时表从内存存储转为磁盘存储以此节省内存。
Creating tmp table
 正在创建临时表以存放部分查询结果。
deleting from main table
 服务器正在执行多表删除中的第一部分,刚删除第一个表。
deleting from reference tables
 服务器正在执行多表删除中的第二部分,正在删除其他表的记录。

Flushing tables
 正在执行FLUSH TABLES,等待其他线程关闭数据表。
Killed
 发送了一个kill请求给某线程,那么这个线程将会检查kill标志位,同时会放弃下一个kill请求。MySQL会在每次的主循环中检查kill标志位,不过有些情况下该线程可能会过一小段才能死掉。如果该线程程被其他线程锁住了,那么kill请求会在锁释放时马上生效。
Locked
 被其他查询锁住了。
Sending data
 正在处理SELECT查询的记录,同时正在把结果发送给客户端。

Sorting for group
 正在为GROUP BY做排序。
 Sorting for order
 正在为ORDER BY做排序。
Opening tables
 这个过程应该会很快,除非受到其他因素的干扰。例如,在执ALTER TABLE或LOCK TABLE语句行完以前,数据表无法被其他线程打开。正尝试打开一个表。
Removing duplicates
 正在执行一个SELECT DISTINCT方式的查询,但是MySQL无法在前一个阶段优化掉那些重复的记录。因此,MySQL需要再次去掉重复的记录,然后再把结果发送给客户端。

Reopen table
 获得了对一个表的锁,但是必须在表结构修改之后才能获得这个锁。已经释放锁,关闭数据表,正尝试重新打开数据表。
Repair by sorting
 修复指令正在排序以创建索引。
Repair with keycache
 修复指令正在利用索引缓存一个一个地创建新索引。它会比Repair by sorting慢些。
Searching rows for update
 正在讲符合条件的记录找出来以备更新。它必须在UPDATE要修改相关的记录之前就完成了。
Sleeping
 正在等待客户端发送新请求.

System lock
 正在等待取得一个外部的系统锁。如果当前没有运行多个mysqld服务器同时请求同一个表,那么可以通过增加--skip-external-locking参数来禁止外部系统锁。
Upgrading lock
 INSERT DELAYED正在尝试取得一个锁表以插入新记录。
Updating
 正在搜索匹配的记录,并且修改它们。

User Lock
 正在等待GET_LOCK()。
Waiting for tables
 该线程得到通知,数据表结构已经被修改了,需要重新打开数据表以取得新的结构。然后,为了能的重新打开数据表,必须等到所有其他线程关闭这个表。以下几种情况下会产生这个通知:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE,或OPTIMIZE TABLE。
waiting for handler insert
 INSERT DELAYED已经处理完了所有待处理的插入操作,正在等待新的请求。
 大部分状态对应很快的操作,只要有一个线程保持同一个状态好几秒钟,那么可能是有问题发生了,需要检查一下。
 还有其他的状态没在上面中列出来,不过它们大部分只是在查看服务器是否有存在错误是才用得着。

例如如图:

3、explain来了解SQL执行的状态
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
使用方法,在select语句前加上explain就可以了:
例如:
explain select surname,first_name form a,b where a.id=b.id
结果如图

EXPLAIN列的解释
table
显示这一行的数据是关于哪张表的
type
这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL
possible_keys
显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句
key
实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句 中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引
key_len
使用的索引的长度。在不损失精确性的情况下,长度越短越好
ref
显示索引的哪一列被使用了,如果可能的话,是一个常数
rows
MYSQL认为必须检查的用来返回请求数据的行数
Extra
关于MYSQL如何解析查询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢

extra列返回的描述的意义
Distinct
一旦MYSQL找到了与行相联合匹配的行,就不再搜索了
Not exists
MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,就不再搜索了
Range checked for each Record(index map:#)
没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一
Using filesort
看到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行
Using index
列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候
Using temporary
看到这个的时候,查询需要优化了。这里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上
Where used
使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index,这就会发生,或者是查询有问题不同连接类型的解释(按照效率高低的顺序排序)
const
表中的一个记录的最大值能够匹配这个查询(索引可以是主键或惟一索引)。因为只有一行,这个值实际就是常数,因为MYSQL先读这个值然后把它当做常数来对待
eq_ref
在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用
ref
这个连接类型只有在查询使用了不是惟一或主键的键或者是这些类型的部分(比如,利用最左边前缀)时发生。对于之前的表的每一个行联合,全部记录都将从表中读出。这个类型严重依赖于根据索引匹配的记录多少—越少越好
range
这个连接类型使用索引返回一个范围中的行,比如使用>或<查找东西时发生的情况
index
这个连接类型对前面的表中的每一个记录联合进行完全扫描(比ALL更好,因为索引一般小于表数据)
ALL
这个连接类型对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,应该尽量避免

查询mysql中执行效率低的sql语句可以使用MySQL 自带 slow log 的分析工具 mysqldumpslow。slow log 是 MySQL 根据 SQL 语句的执行时间设定,写入的一个文件,用于分析执行较慢的语句。
配置方法如下:
1、打开mysql的安装目录,找到my.cnf文件,并打开,输入以下配置:
log-slow-queries = [slow_query_log_filename]
即可记录超过默认的 10s 执行时间的 SQL 语句。
如果要修改默认设置,可以添加:
long_query_time = 5
设定为 5s 。
2、执行sql的过程中用explain来了解SQL执行的状态。
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
使用方法,在select语句前加上explain就可以了:
如:explain select surname,first_name form a,b where a.id=b.id

在MySQL下,在启动参数中设置 --log-slow-queries=[文件名],就可以在指定的日志文件中记录执行时间超过long_query_time(缺省为10秒)的SQL语句。你也可以在启动配置文件中修改long query的时间,如:

复制代码代码如下:

# Set long query time to 8 seconds
long_query_time=8

  • MySQL涓鍑犵甯歌鐨勬棩蹇
    绛旓細浣滅敤鑼冨洿涓哄叏灞鎴栦細璇濈骇鍒紝灞為潪鍔ㄦ佸彉閲忋2.鎱鏌ヨ鏃ュ織锛坰low query log锛夋參鏌ヨ鏃ュ織鏄敤鏉ヨ褰曟墽琛屾椂闂磋秴杩 long_query_time 杩欎釜鍙橀噺瀹氫箟鐨勬椂闀跨殑鏌ヨ璇彞銆傞氳繃鎱㈡煡璇㈡棩蹇楋紝鍙互鏌ユ壘鍑哄摢浜涙煡璇㈣鍙鐨勬墽琛屾晥鐜寰堜綆锛屼互渚胯繘琛屼紭鍖栥備笌鎱㈡煡璇㈢浉鍏崇殑鍑犱釜鍙傛暟濡備笅锛歴low_query_log锛氭槸鍚﹀惎鐢ㄦ參鏌ヨ鏃ュ織锛岄粯璁...
  • 濡備綍鏌ョ湅mysql 鑴氭湰鐨勬ц兘
    绛旓細鍙互浣跨敤EXPLAIN璇彞鏌ョ湅SQL鑴氭湰鎬ц兘锛欵XPLAIN SELECT 璇彞锛涗緥濡傚鐢熻〃锛屽叾涓數璇濆瓧娈靛缓绔嬩簡绱㈠紩 瀛︾敓琛ㄦ湁6鏉¤褰 鏌ヨSQL璇彞鐨勮繍琛鏁堢巼 explain select * from students where phone like '%34%'\G 涓嬪浘rows涓6锛屾樉绀鸿鏌ヨ鎵弿浜6琛岃褰曪紝娌℃湁鍒╃敤鍒扮储寮 explain select * from students where phone ...
  • mysql鏁版嵁搴鎬庝箞浼樺寲sql璇彞
    绛旓細3锛宻low_query_log_file 璁板綍鏃ュ織鐨勬枃浠跺悕銆4锛宭og_queries_not_using_indexes 杩欎釜鍙傛暟璁剧疆涓篛N锛屽彲浠ユ崟鑾峰埌鎵鏈夋湭浣跨敤绱㈠紩鐨凷QL璇彞锛屽敖绠¤繖涓猄QL璇彞鏈夊彲鑳鎵ц寰楁尯蹇備簩銆佹娴mysql涓sql璇彞鐨鏁堢巼鐨勬柟娉 1銆侀氳繃鏌ヨ鏃ュ織 锛1锛夈乄indows涓嬪紑鍚疢ySQL鎱鏌ヨ MySQL鍦╓indows绯荤粺涓殑閰嶇疆鏂囦欢涓鑸槸鏄痬y...
  • MySQL涓浣浣跨敤profile鍒嗘瀽SQL鎵ц鐘舵
    绛旓細+---+ | @@profiling | +---+ |      1 | +---+ 1 row in set (0.00 sec) 浣跨敤profile鍒嗘瀽SQL锛屽彲浠ョ湅鍒版墽琛屼袱娆″悗,Send data鍜宻ending cached result to clien鎵ц鏁堢巼鐨鍙樺寲 mysql select count(*) from sakila.payment; +---+ | count(*) | ...
  • mysql濡備綍浼樺寲浠ヤ笅璇彞,鏌ヨ鑰楁椂澶箙浜?
    绛旓細澧炲姞杩欎簺鍙傛暟涔嬪悗锛岄噸鍚MySQL锛屽彲浠ヨ繘琛鏌ヨ鎱㈡煡璇㈡棩蹇楁槸鍚﹀紑鍚1. 浠讳綍鍦版柟閮戒笉瑕佷娇鐢 select * from t锛岀敤鍏蜂綋鐨勫瓧娈靛垪琛ㄤ唬鏇库*鈥滐紝涓嶈杩斿洖鐢ㄤ笉鍒扮殑浠讳綍瀛楁銆2. 绱㈠紩骞朵笉鏄秺澶氳秺濂斤紝绱㈠紩鍥虹劧鍙互鎻愰珮鐩稿簲鐨 select 鐨勬晥鐜锛屼絾鍚屾椂涔熼檷浣庝簡 insert 鍙 update 鐨勬晥鐜囷紝鍥犱负 insert 鎴 update 鏃...
  • mysql鏌ヨ鏁堢巼闂?
    绛旓細绗簩绉嶈仈鍚鏌ヨ鐨勬晥鐜瑕佸揩浜涖1銆佺涓绉峉ELECT * FROM 琛ˋ锛岃〃B where id =1浜ゅ弶杩炴帴鏄瘡涓鏉¤褰曚笌鍙﹀涓涓〃鐨勬瘡涓鏉¤褰曡繛鎺ワ紝姣斿琛ˋ鏈48涓瓧娈碉紝琛˙鏈35涓瓧娈点傞偅涔堟煡璇㈠嚭鏉ョ殑鏁伴噺浼氭槸3350鏉¤褰曘備骇鐢熶簡寰堝鍨冨溇鏁版嵁銆2銆佺浜岀SELECT * FROM 琛ˋ LEFT JOIN 琛˙ LEFT JOIN 琛– ...
  • SQL璇彞鐨勫嚑绉嶄紭鍖栨柟娉
    绛旓細3銆佸敖鍙兘涓嶈select *锛岃屽彧鍒楀嚭鑷繁闇瑕佺殑瀛楁鍒楄〃銆4銆佸敖鍙兘鍑忓皯瀛鏌ヨ鐨灞傛暟銆5銆佸敖鍙兘鍦ㄥ瓙鏌ヨ涓杩涜鏁版嵁绛涢 銆傚彲浠ラ氳繃浠ヤ笅涓ょ鏂瑰紡瀹氫綅鎵ц鏁堢巼杈浣庣殑 SQL 璇彞銆1銆侀氳繃鎱㈡煡璇㈡棩蹇楀畾浣嶉偅浜涙墽琛屾晥鐜囪緝浣庣殑 SQL 璇彞,鐢--log-slow-queries[=file_name]閫夐」鍚姩鏃,mysqld 鍐欎竴涓寘鍚墍鏈夋墽琛...
  • 鍏充簬mysql澶勭悊鐧句竾绾т互涓婄殑鏁版嵁鏃濡備綍鎻愰珮鍏鏌ヨ閫熷害鐨勬柟娉
    绛旓細?c%’鑻ヨ鎻愰珮鏁堢巼锛屽彲浠ヨ冭檻鍏ㄦ枃妫绱6銆乮n 鍜 not in 涔熻鎱庣敤锛屽惁鍒欎細瀵艰嚧鍏ㄨ〃鎵弿锛屽锛歴elect id from t where num in(1,2,3)瀵逛簬杩炵画鐨鏁板硷紝鑳界敤 between 灏变笉瑕佺敤 in 浜嗭細select id from t where num between 1 and 37銆佸鏋滃湪 where 瀛愬彞涓娇鐢ㄥ弬鏁帮紝涔熶細瀵艰嚧鍏ㄨ〃鎵弿銆...
  • 鍒嗘瀽涓轰粈涔mysql涓like妯$硦鏌ヨ鏁堢巼浣
    绛旓細绗簩姝ワ細浣跨敤绱㈠紩 濡備笅鍥撅紝浣跨敤绱㈠紩鍚庯紝鏅氭煡璇㈢殑鑰楁椂鍩烘湰绠楁槸绉掓煡锛岄潪甯稿揩锛涜宭ike鏌ヨ杩樻槸鑰楁椂涓绉掑銆傜涓夋锛氬垎鏋愬師鍥 濡備笅鍥撅紝鐢╡xplain鍒嗘瀽涓涓嬶紝姝ゆ椂鎴戜滑绔嬪埢鏄庣櫧浜嗭紝鏅氭煡璇㈢敤鍒颁簡绱㈠紩锛屼絾鏄痩ike璇彞娌℃湁鐢ㄥ埌绱㈠紩銆傛墍浠ワ紝鐓ф垚mysql涓like鏌ヨ鏁堢巼浣庝笅鐨勫師鍥犳槸锛氬湪鏈変簺鎯呭喌涓嬶紝like鏌ヨ浣跨敤涓...
  • mysql涓鍝簺鍥犵礌浼氬奖鍝嶅埌鏌ヨ鎬ц兘
    绛旓細褰卞搷鍒版煡璇㈡ц兘锛1銆佽〃瀛樺偍閲忥紝瓒呰繃鐧句竾锛鏌ヨ鏁堢巼浼氭槑鏄鹃檷浣庛2銆佺储寮曠被鍨嬨傝櫧鐒跺鍔犵储寮曞彲浠ュ鍔犳煡璇㈡晥鐜囷紝鍙槸杩囧锛屼細鐣ュ奖鍝嶆ц兘锛岃屼笖绱㈠紩瀛楁鐨勭被鍨嬶紝涔熷奖鍝嶆煡璇㈡ц兘锛宨nt鎬ц兘鏄渶濂界殑锛屽瓧绗︾被鍨嬬殑绱㈠紩鏌ヨ鎬ц兘鐣ュ樊 3銆佽〃瀛樺偍绫诲瀷褰卞搷鎬ц兘锛屾湁innodb myisam 绛夌被鍨嬶紝鍖哄埆鍜岀敤閫旂櫨搴︿笅灏变細鐭ラ亾銆傝嚦灏...
  • 扩展阅读:mysql子查询详细案例 ... mysql查询正在执行的sql ... mysql查询sql执行记录 ... mysql查询最近执行的sql ... 子查询的执行过程 ... 查询mysql的连接数 ... mysql常用查询语句大全 ... mysql子查询怎么写 ... sql子查询和连接查询效率 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网