- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 1000 万行的简单 MYSQL 表。它需要优化,但我不确定为什么这个简单的选择需要这么长时间。似乎是查询时间,在流式传输结果之前。
关于设置性能调整的任何好的链接?非常过时的示例:http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/
##QUERY:
SELECT * FROM scga_results;
mysql-slow.log
# Time: 120126 15:05:03
# User@Host: abc[abc] @ localhost []
# Query_time: 25 Lock_time: 0 Rows_sent: 11896464 Rows_examined: 11896464
select * from scga_results;
##REF
mysql> describe scga_results;
+--------------+------------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+-------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| application | varchar(255) | NO | MUL | | |
| field | varchar(255) | YES | | NULL | |
| value | varchar(255) | YES | | NULL | |
| period | varchar(255) | YES | MUL | NULL | |
| end_time | varchar(255) | YES | | NULL | |
| date_updated | timestamp | NO | | CURRENT_TIMESTAMP | |
+--------------+------------------+------+-----+-------------------+----------------+
7 rows in set (0.00 sec)
mysql> show table status like 'scga_results'\G
*************************** 1. row ***************************
Name: scga_results
Engine: MyISAM
Version: 10
Row_format: Dynamic
Rows: 11897025
Avg_row_length: 96
Data_length: 1152314616
Max_data_length: 281474976710655
Index_length: 180028416
Data_free: 0
Auto_increment: 11971193
Create_time: 2012-01-26 13:32:57
Update_time: 2012-01-27 00:20:04
Check_time: 2012-01-26 13:39:19
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
添加查询详细信息
USES KEY:
mysql> explain select * from scga_results where application="20000";
+----+-------------+--------------+------+---------------+---------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------+------+---------------+---------+---------+-------+------+-------------+
| 1 | SIMPLE | scga_results | ref | index_2 | index_2 | 257 | const | 1 | Using where |
+----+-------------+--------------+------+---------------+---------+---------+-------+------+-------------+
1 row in set (0.26 sec)
NO KEY USED:
mysql> explain select * from scga_results where id="20";
mysql> explain select * from scga_results where period="day";
mysql> explain select * from scga_results where application>0;
添加个人资料详细信息
mysql> SET PROFILING=1;
mysql> SELECT * FROM scga_results;
------------------+---------------------+
11897787 rows in set (23.05 sec)
mysql> show profiles;
+----------+-------------+-----------------------------+
| Query_ID | Duration | Query |
+----------+-------------+-----------------------------+
| 1 | 6.72981800 | select id from scga_results |
| 2 | 23.06871000 | select * from scga_results |
+----------+-------------+-----------------------------+
2 rows in set (0.00 sec)
mysql> SHOW PROFILE FOR QUERY 2;
+--------------------------------+-----------+
| Status | Duration |
+--------------------------------+-----------+
| (initialization) | 0.000008 |
| checking query cache for query | 0.000047 |
| checking permissions | 0.00001 |
| Opening tables | 0.000013 |
| System lock | 0.000007 |
| Table lock | 0.000026 |
| init | 0.000023 |
| optimizing | 0.000006 |
| statistics | 0.000015 |
| preparing | 0.000013 |
| executing | 0.000004 |
| Sending data | 23.055196 |
| end | 0.000018 |
| query end | 0.000007 |
| freeing items | 0.000014 |
| closing tables | 0.000009 |
| logging slow query | 0.013294 |
+--------------------------------+-----------+
17 rows in set (0.01 sec)
最佳答案
看起来您正在检索超过 1GB 的数据。如果您真的需要更快地获取所有这些数据,我认为您将需要更改硬件。
由于服务器上的其他负载,您的查询运行速度可能比您预期的要慢,但您很可能已达到硬件所能提供的极限。
您可以尝试切换到更快的硬盘驱动器、某些类型的 RAID 硬盘驱动器或某种固态内存 - 甚至将表转换为 MEMORY 表以便将其保存在 RAM 中。请记住,这仍然不会使其立即生效,因为数据必须通过内存总线等。
关于mysql - 没有 WHERE 子句的 SQL 查询优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9039210/
SQL、PL-SQL 和 T-SQL 之间有什么区别? 谁能解释一下这三者之间的区别,并提供每一个的相关使用场景? 最佳答案 SQL 是一种对集合进行操作的查询语言。 它或多或少是标准化的,几乎所有关
这个问题已经有答案了: What is the difference between SQL, PL-SQL and T-SQL? (6 个回答) 已关闭 9 年前。 我对 SQL 的了解足以完成我的
我在数据库中有一个 USER 表。该表有一个 RegistrationDate 列,该列有一个默认约束为 GETDATE()。 使用 LINQ 时,我没有为 RegistrationDate 列提供任
我有一个可能属于以下类型的字符串 string expected result 15-th-rp 15 15/12-rp 12 15-12-th
很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center . 9年前关闭
我有一个存储过程(称为 sprocGetArticles),它从文章表中返回文章列表。这个存储过程没有任何参数。 用户可以对每篇文章发表评论,我将这些评论存储在由文章 ID 链接的评论表中。 有什么方
我目前正在做一个 *cough*Oracle*cough* 数据库主题。讲师介绍embedded SQL作为让其他语言(例如 C、C++)与(Oracle)数据库交互的方式。 我自己做了一些数据库工作
SQL Server 中 SQL 语句的最大长度是多少?这个长度是否取决于 SQL Server 的版本? 例如,在 DECLARE @SQLStatement NVARCHAR(MAX) = N'S
这个问题已经有答案了: Simple way to transpose columns and rows in SQL? (9 个回答) 已关闭 8 年前。 CallType
预先感谢您对此提供的任何帮助。 假设我有一个查询,可以比较跨年的数据,从某个任意年份开始,永无止境(进入 future ),每年同一时期直到最后一个完整的月份(其特点是一月数据永远不会显示至 2 月
我在数据库中有一个 USER 表。该表有一个 RegistrationDate 列,该列的默认约束为 GETDATE()。 使用 LINQ 时,我没有为 RegistrationDate 列提供任何数
下面是我试图用来检查存储过程是否不存在然后创建过程的 sql。它会抛出一个错误:Incorrect syntax near the keyword 'PROCEDURE' IF NOT EXISTS
我有一个同事声称动态 SQL 在许多情况下比静态 SQL 执行得更快,所以我经常看到 DSQL 到处都是。除了明显的缺点,比如在运行之前无法检测到错误并且更难阅读,这是否准确?当我问他为什么一直使用
来自 lobodava 的动态 SQL 查询是: declare @sql nvarchar(4000) = N';with cteColumnts (ORDINAL_POSITION, CO
使用 SQL Server 中的存储过程执行动态 SQL 命令的现实优点和缺点是什么 EXEC (@SQL) 对比 EXEC SP_EXECUTESQL @SQL ? 最佳答案 sp_executes
我有这个有效的 SQL 查询: select sum(dbos.Points) as Points, dboseasons.Year from dbo.StatLines dbos i
我正在调试一些构建成功运行的 SQL 命令的代码。 然而,在查询结束时,查询结果似乎被写入了一个文本文件。 完整的查询如下 echo SELECT DATE,DATETABLE,DATE,APPDAT
我有一些创建表的 .sql 文件(MS SQL 数据库): 表_1.sql: IF OBJECT_ID (N'my_schema.table1', N'U') IS NOT NULL DROP TAB
我写了下面的 SQL 存储过程,它一直给我错误@pid = SELECT MAX(... 整个过程是: Alter PROCEDURE insert_partyco @pname varchar(20
我在 SQL Server 2005 中有包含两列 Fruit 和 Color 的表,如下所示 Fruit Colour Apple Red Orange
我是一名优秀的程序员,十分优秀!