大家好,感谢邀请,今天来为大家分享一下查看sql执行时间的问题,以及和如何查看sql语句的执行状态的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
本文目录
- sql执行时间一般不超过多久
- mssql时间如何查询sql怎么查时间
- 怎么查看用户的SQL执行历史
- Dbe *** er查看的sql运行时间
- 如何查看sqlserver执行计划来判断SQL语句效率
- MSSQL如何查看sql语句执行时间判断执行效率
一、sql执行时间一般不超过多久
常见查询慢的原因常见的话会有如下几种:
PS:索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从之一个记录开始扫描整个表
的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个 *** 作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录
即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。
普通索引:这是最基本的索引类型,没唯一 *** 之类的 *** 。
唯一 *** 索引:和普通索引基本相同,但所有的索引列只能出现一次,保持唯一 *** 。
主键:主键是一种唯一索引,但必须指定为"PRIMARY KEY"。
全文索引:MYSQL从3.23.23开始支持全文索引和全文检索。在MYSQL中,全文索引的索引类型为FULLTEXT。全文索引可以在VARCHAR或者TEXT类型的列上创建。
PS:这是从 *** 层来分析MYSQL是比较耗IO的。一般数据库 *** 也是比较关注IO。
参数-d表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。
二、mssql时间如何查询sql怎么查时间
1、MSsql如何查看sql语句的执行时间来判断执行效率?
2、通过设置统计数据,我们可以查看执行SQL时的 *** 情况。有选项配置文件、io和时间。介绍如下:
3、SETSTAT *** TICSPROFILEON:显示分析、编译和执行查询所需的时间(毫秒)。
4、SETSTAT *** TICSIOON:报告语句中引用的每个表的扫描次数、逻辑读取次数(缓存中访问的页数)和物理读取次数(磁盘访问次数)的信息。
5、SETSTAT *** TICSTIMEON:显示每个查询执行后的结果集,表示查询执行的配置文件。
6、用法:打开SQLSERVER查询分析器并输入以下语句:
7、从[测试用例选择]中选择[测试用例]
8、此外,还可以手动添加语句并计算执行时间来检查执行语句所花费的时间,以此来判断这条SQL语句的效率:
9、从[测试用例选择]中选择[测试用例]
10、select[语句执行时间(毫秒)]=datediff(毫秒,@d,getdate())
11、mysql怎么现在时间between两个时间段内的值?
12、wherenow()betweenstarttimeandendtime按你的要求是这样,但是这么写不好,更好还是用wherestarttime=now()因为这样能用到starttime和endtime字段的索引
13、查看数据库表的创建时间可以在 *** r *** tion_sche *** 中查看
14、 *** r *** tion_sche *** 数据库表说明:
15、SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是showdatabases的结果取之此表。
16、TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个sche *** ,表类型,表引擎,创建时间等信息。是showtablesfromsche *** name的结果取之此表。
17、数据库表的创建时间在TABLES表中的CREATE_TIME字段
18、SELECTCREATE_TIMEFROMTABLESWHERETABLE_SCHEMA=数据库名ANDTABLE_NAME=表名;
19、将上面的数据库名以及表名替换为所要查询的数据即可。
20、mysql中如何查看数据库表的创建时间?
21、查看数据库表的创建时间可以在 *** r *** tion_sche *** 中查看
22、 *** r *** tion_sche *** 数据库表说明:
23、SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是showdatabases的结果取之此表。
24、TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个sche *** ,表类型,表引擎,创建时间等信息。是showtablesfromsche *** name的结果取之此表。
25、数据库表的创建时间在TABLES表中的CREATE_TIME字段
26、SELECTCREATE_TIMEFROMTABLESWHERETABLE_SCHEMA='数据库名'ANDTABLE_NAME='表名';
27、将上面的数据库名以及表名替换为所要查询的数据即可。
28、unix_timestamp函数,可以接受一个参数,也可以不使用参数,它的返回值是一个无符号数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,如果使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970-01-0100:00:00到指定时间所经历的秒数,有了这个函数,就可以很自然的把时间比较转换为一个无符号整数的比较,相减,就能够得到秒数了。
29、MySQL当前时间没有快捷键,只有相关的关键字这个关键字是sysdate
三、怎么查看用户的SQL执行历史
1、如何知道一个session都执行过哪些SQL语句?(查看当前比较容易,历史的呢?怎么复原sql的执行场景——事务关系、执行序列、单SQL还是存储过程)
2、【 *** 一】查询v$sqltext、v$sqlarea、v$sqlstats视图
3、select* from v$sqlarea t where t.PARSING_SCHEMA_NAME in('sche *** ') order by t.LAST_ACTIVE_TIME desc;
4、#对v$sqltext、v$sqlarea查看的是shared pool中的SQL,其时间索引是其解析历史,因为共享的问题这个查询可能并不能完整地反映出执行的历史。
5、#v$sqlstats信息保留时间比v$sql、v$sqltext、v$sqlarea长,及时SQL已经换出shared pool仍然可查到
6、联合v$active_session_history和v$sqlarea
7、#v$active_session_history这个表只是个取样数据,按秒进行,只有在那一秒采样点处于on cpu或非idle等待的session统计在内。所以可能会不全,有些执行很短的SQL会忽略。这个视图无法还原完整的session历史。
8、#v$sqlarea中有执行过的SQL语句,但并无到session的关联信息,v$session中只关联了当前的sql,所以也不行。
9、查看视图:dba_hist_sqlstats、dba_hist_sqltext(历史数据)
四、Dbe *** er查看的sql运行时间
1、在dBe *** er中,您可以使用以下步骤查询SQL语句的执行时间:
2、打开dBe *** er,连接到您要查询的数据库。
3、在SQL编辑器中编写您要查询的SQL语句。
4、右键单击语句并选择“执行语句”。
5、执行语句后,您将在状态栏中看到执行时间。
6、如果您想要更详细的执行信息,可以在dBe *** er的首选项设置中打开“显示执行计划”,以查看执行计划和其他诊断信息。
五、如何查看sqlserver执行计划来判断SQL语句效率
检测mysql中sql语句的效率的 ***
(1)、Windows下开启MySQL慢查询
MySQL在Windows *** 中的配置文件一般是是my.ini找到[mysqld]下面加上
log-slow-queries= F:/MySQL/log/mysqlslowquery。log
MySQL在Windows *** 中的配置文件一般是是my *** f找到[mysqld]下面加上
log-slow-queries=/data/mysqldata/slowquery。log
log-slow-queries= F:/MySQL/log/mysqlslowquery。
为慢查询日志存放的位置,一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录;
long_query_time=2中的2表示查询超过两秒才记录;
SHOW PROCESSL *** T显示哪些线程正在运行。您也可以使用mysqladmin processlist语句得到此信息。
一个标识,你要kill一个语句的时候很有用,用命令杀掉此查询/*/mysqladmin kill进程号。
显示单前用户,如果不是root,这个命令就只显示你权限范围内的sql语句。
显示这个语句是从哪个ip的哪个端口上发出的。用于 *** 出问题语句的用户。
显示这个进程目前连接的是哪个数据库。
显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect)。
此这个状态持续的时间,单位是秒。
显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,一个 sql语句,以查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成
显示这个sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。
这个命令中最关键的就是state列,mysql列出的状态主要有以下几种:
正在检查数据表(这是自动的)。
正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这是一个很快的 *** 作,如果不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处于重负中。
*** 从服务器正在连接主服务器。
由于临时结果集大于tmp_table_size,正在将临时表从内存存储转为磁盘存储以此节省内存。
正在创建临时表以存放部分查询结果。
服务器正在执行多表删除中的之一部分,刚删除之一个表。
deleting from reference tables
服务器正在执行多表删除中的第二部分,正在删除其他表的记录。
正在执行FLUSH TABLES,等待其他线程关闭数据表。
发送了一个kill请求给某线程,那么这个线程将会检查kill标志位,同时会放弃下一个kill请求。MySQL会在每次的主循环中检查kill标志位,不过有些情况下该线程可能会过一小段才能死掉。如果该线程程被其他线程锁住了,那么kill请求会在锁释放时马上生效。
正在处理SELECT查询的记录,同时正在把结果发送给客户端。
这个过程应该会很快,除非受到其他因素的干扰。例如,在执ALTER TABLE或LOCK TABLE语句行完以前,数据表无法被其他线程打开。正尝试打开一个表。
正在执行一个SELECT D *** TINCT方式的查询,但是MySQL无法在前一个阶段优化掉那些重复的记录。因此,MySQL需要再次去掉重复的记录,然后再把结果发送给客户端。
获得了对一个表的锁,但是必须在表结构修改之后才能获得这个锁。已经释放锁,关闭数据表,正尝试重新打开数据表。
修复指令正在利用索引缓存一个一个地创建新索引。它会比Repair by sorting慢些。
正在讲符合条件的记录找出来以备更新。它必须在UPDATE要修改相关的记录之前就完成了。
正在等待取得一个外部的 *** 锁。如果当前没有运行多个mysqld服务器同时请求同一个表,那么可以通过增加--skip-external-locking参数来禁止外部 *** 锁。
INSERT DELAYED正在尝试取得一个锁表以 *** 新记录。
正在搜索匹配的记录,并且修改它们。
该线程得到通知,数据表结构已经被修改了,需要重新打开数据表以取得新的结构。然后,为了能的重新打开数据表,必须等到所有其他线程关闭这个表。以下几种情况下会产生这个通知:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANA *** ZE TABLE,或OPTIMIZE TABLE。
INSERT DELAYED已经处理完了所有待处理的 *** *** 作,正在等待新的请求。
大部分状态对应很快的 *** 作,只要有一个线程保持同一个状态好几秒钟,那么可能是有问题发生了,需要检查一下。
还有其他的状态没在上面中列出来,不过它们大部分只是在查看服务器是否有存在错误是才用得着。
六、MSSQL如何查看sql语句执行时间判断执行效率
1、写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到SQL的STAT *** TICS状态值来查看了。
2、通过设置STAT *** TICS我们可以查看执行SQL时的 *** 情况。选项有PROFILE,IO,TIME。介绍如下:
3、SET STAT *** TICS PROFILE ON:显示分析、编译和执行查询所需的时间(以毫秒为单位)。
4、SET STAT *** TICS IO ON:报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息。
5、SET STAT *** TICS TIME ON:显示每个查询执行后的结果集, *** 查询执行的配置文件。
6、使用 *** :打开SQL SERVER查询分析器,输入以下语句:
7、SELECT [TestCase] FROM [TestCaseSelect]
8、另外,也可以通过手工添加语句,计算执行时间来查看执行语句花费了的时间,以判断该条SQL语句的效率如何:
9、SELECT [TestCase] FROM [TestCaseSelect]
10、select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
OK,关于查看sql执行时间和如何查看sql语句的执行状态的内容到此结束了,希望对大家有所帮助。