数据库大数据量表SQL语句执行耗时久

起因:接口传输数据慢,出现超时情况。
原因:表数据量庞大,执行查询操作时耗时久。虽然建立了索引,但是没有效果,没有走索引。
数据库:Oracle

查看执行计划结果:Sql语句是否走索引。

EXPLAIN PLAN FOR slow sql; 
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

注:EXPLAIN PLAN FOR 后接Sql语句。

结果:全表扫描检索。长时间没做表分析或者重新收集表状态信息,未走索引。

在这里插入图片描述
解决:分析表。

analyze table tablename compute statistics

总结一:常见索引扫描类型

  1. index unique scan

 索引唯一扫描,当可以优化器发现某个查询条件可以利用到主键、唯一键、具有外键约束的列,或者只是访问其中某行索引所在的数据的时候,优化器会选择这种扫描类型。
  1. index range scan

 索引范围扫描,当优化器发现在UNIQUE列上使用了大于、小于、大于等于、小于等于以及BETWEEN等就会使用范围扫描,在组合列上只使用部分进行查询,导致查询出多行数据。对非唯一的索引列上进行任何活动都会使用index range scan。
  1. index full scan

全索引扫描,如果要查询的数据可以全部从索引中获取,则使用全索引扫描。
  1. index fast full scan

索引快速扫描,扫描索引中的全部的数据块,与全索引扫描的方式基本上类似。两者之间的明显的区别是,索引快速扫描对查询的数据不进行排序,数据返回的时候不是排序的。“在这种存取方法中,可以使用多块读功能,也可以使用并行读入,从而得到最大的吞吐量和缩短执行时间”。

总结二:可能不走索引的情况

1、where 中字段没创建索引,不走索引。

2、长时间没做表分析或者重新收集表状态信息,不走索引。

3、索引列使用函数,需建立函数索引。

4、对索引列进行了加减乘除运算,不走索引。

5、where中使用 is null 和 is not null。

6、where中使用 like '%%' 进行模糊查询。

7、where中使用<>、not in 、not exist。

8、数据类型不匹配,例如:select * from tablewhere jlbh = 1;jlbh为varchar2类型字段

9、单独引用复合索引里非第一位置的索引列。

10、索引失效,可以考虑重建索引,rebuild online。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在MySQL中,复制大数据量表有多种方式可以实现。以下是一些常见的方法: 1. 使用INSERT INTO SELECT语句: 这是最简单和常见的复制的方法。您可以使用SELECT语句选择源中的数据,并使用INSERT INTO语句将其插入到新中。例如: ```sql INSERT INTO new_table SELECT * FROM old_table; ``` 这会将源中的所有数据复制到新中。 2. 使用CREATE TABLE和INSERT INTO语句: 如果您只想复制结构而不包括数据,可以使用CREATE TABLE语句创建一个新,并使用INSERT INTO语句插入数据。例如: ```sql CREATE TABLE new_table LIKE old_table; INSERT INTO new_table SELECT * FROM old_table; ``` 这将创建一个与源结构相同的新,并将源的数据插入到新中。 3. 使用mysqldump命令: mysqldump是一个MySQL提供的用于备份和还原数据库的命令行工具。您可以使用mysqldump导出源的结构和数据,然后使用mysql命令将其导入到新中。例如: ```shell mysqldump -u username -p database_name old_table > table_dump.sql mysql -u username -p database_name < table_dump.sql ``` 这将导出原的结构和数据到table_dump.sql文件中,并将其导入到新中。 4. 使用ALTER TABLE语句: 如果您只需要复制结构,并且希望进行一些更改(例如增加或删除列),您可以使用ALTER TABLE语句。例如: ```sql CREATE TABLE new_table LIKE old_table; ALTER TABLE new_table ADD COLUMN new_column INT; ``` 这将创建一个与源结构相同的新,并在新中添加一个新列。 请根据您的需求选择适合的方法来复制大数据量表。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MySQL的复制以及大型数据的备份教程](https://blog.csdn.net/weixin_32498321/article/details/113235475)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [MySQL处理方式、快速复制结构和数据的方式](https://blog.csdn.net/user2025/article/details/115432905)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Mysql提升大数据拷贝效率的解决方案](https://download.csdn.net/download/weixin_38635996/13699427)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值