mysql查看索引(如何查看mysql数据库的引擎)

:暂无数据 2026-05-08 21:20:02 0
当我们讨论mysql查看索引时,我们真正需要关注的是什么?很多高手的答案都指向了:如何查看mysql数据库的引擎。为什么?

本文目录

如何查看mysql数据库的引擎

一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看:
看你的mysql现在已提供什么存储引擎:
mysql》 show engines;
看你的mysql当前默认的存储引擎:
mysql》 show variables like ’%storage_engine%’;
你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):
mysql》 show create table 表名;
My**L数据库引擎详解
作为Java程序员,My**L数据库大家平时应该都没少使用吧,对My**L数据库的引擎应该也有所了解,这篇文章就让我详细的说说My**L数据库的Innodb和MyIASM两种引擎以及其索引结构。也来巩固一下自己对这块知识的掌握。
Innodb引擎
Innodb引擎提供了对数据库ACID事务的支持,并且实现了**L标准的四种隔离级别,关于数据库事务与其隔离级别的内容请见数据库事务与其隔

离级别这篇文章。该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于My**L后台的完整数据库系统,My**L
运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECT
COUNT(*) FROM
TABLE时需要扫描全表。当需要使用数据库事务时,该引擎当然是首选。由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎
会提升效率。但是使用行级锁也不是绝对的,如果在执行一个**L语句时My**L不能确定要扫描的范围,InnoDB表同样会锁全表。
MyIASM引擎
MyIASM是My**L默认的引擎,但是它没有提供对数据库事务的支持,也不支持行级锁和外键,因此当INSERT(插入)或UPDATE(更
新)数据时即写操作需要锁定整个表,效率便会低一些。不过和Innodb不同,MyIASM中存储了表的行数,于是SELECT COUNT(*)
FROM
TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。如果表的读操作远远多于写操作且不需要数据库事务的支持,那么MyIASM也是很好的选
择。
两种引擎的选择
大尺寸的数据集趋向于选择InnoDB引擎,因为它支持事务处理和故障恢复。数据库的大小决定了故障恢复的时间长短,InnoDB可以利用事务日志

进行数据恢复,这会比较快。主键查询在InnoDB引擎下也会相当快,不过需要注意的是如果主键太长也会导致性能问题,关于这个问题我会在下文中讲到。大

批的INSERT语句(在每个INSERT语句中写入多行,批量插入)在MyISAM下会快一些,但是UPDATE语句在InnoDB下则会更快一些,尤
其是在并发量大的时候。
Index——索引
索引(Index)是帮助My**L高效获取数据的数据结构。MyIASM和Innodb都使用了树这种数据结构做为索引,关于树我也曾经写过一篇文章树是一种伟大的数据结构,只是自己的理解,有兴趣的朋友可以去阅读。下面我接着讲这两种引擎使用的索引结构,讲到这里,首先应该谈一下B-Tree和B+Tree。
B-Tree和B+Tree
B+Tree是B-Tree的变种,那么我就先讲B-Tree吧,相信大家都知道红黑树,这是我前段时间学《算法》一书时,实现的一颗红黑树,大家

可以参考。其实红黑树类似2,3-查找树,这种树既有2叉结点又有3叉结点。B-Tree也与之类似,它的每个结点做多可以有d个分支(叉),d称为B-

Tree的度,如下图所示,它的每个结点可以有4个元素,5个分支,于是它的度为5。B-Tree中的元素是有序的,比如图中元素7左边的指针指向的结点

中的元素都小于7,而元素7和16之间的指针指向的结点中的元素都处于7和16之间,正是满足这样的关系,才能高效的查找:首先从根节点进行二分查找,找
到就返回对应的值,否则就进入相应的区间结点递归的查找,直到找到对应的元素或找到null指针,找到null指针则表示查找失败。这个查找是十分高效
的,其时间复杂度为O(logN)(以d为底,当d很大时,树的高度就很低),因为每次检索最多只需要检索树高h个结点。
接下来就该讲B+Tree了,它是B-Tree的变种,如下面两张图所示:
vcHLx/i85LLp0a/Qp8LKoaM8L3A+DQo8aDMgaWQ9"myisam引擎的索引结构"》MyISAM引擎的索引结构
MyISAM引擎的索引结构为B+Tree,其中B+Tree的数据域存储的内容为实际数据的地址,也就是说它的索引和实际的数据是分开的,只不过是用索引指向了实际的数据,这种索引就是所谓的非聚集索引。
Innodb引擎的索引结构
MyISAM引擎的索引结构同样也是B+Tree,但是Innodb的索引文件本身就是数据文件,即B+Tree的数据域存储的就是实际的数据,这种索引就是聚集索引。这个索引的key就是数据表的主键,因此InnoDB表数据文件本身就是主索引。
因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有),如果没有显式指定,则My**L系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则My**L自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。
并且和MyISAM不同,InnoDB的辅助索引数据域存储的也是相应记录主键的值而不是地址,所以当以辅助索引查找时,会先根据辅助索引找到主
键,再根据主键索引找到实际的数据。所以Innodb不建议使用过长的主键,否则会使辅助索引变得过大。建议使用自增的字段作为主键,这样B+Tree的
每一个结点都会被顺序的填满,而不会频繁的分裂调整,会有效的提升插入数据的效率。

怎么查看表的索引mysql

查看索引的语法格式如下:
SHOW INDEX FROM 《表名》
语法说明如下:
《表名》:指定需要查看索引的数据表名。
《数据库名》:指定需要查看索引的数据表所在的数据库,可省略。比如,SHOW INDEX FROM student FROM test; 语句表示查看 test 数据库中 student 数据表的索引。
示例
使用 SHOW INDEX 语句查看《My**L创建索引》一节中 tb_stu_info2 数据表的索引信息,**L 语句和运行结果如下所示。
mysql》 SHOW INDEX FROM tb_stu_info2\G
1. row
Table: tb_stu_info2
Non_unique: 0
Key_name: height
Seq_in_index: 1
Column_name: height
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
1 row in set (**** sec)
其中各主要参数说明如下:
参数说明
Table表示创建索引的数据表名,这里是 tb_stu_info2 数据表。
Non_unique表示该索引是否是唯一索引。若不是唯一索引,则该列的值为 1;若是唯一索引,则该列的值为 0。
Key_name表示索引的名称。
Seq_in_index表示该列在索引中的位置,如果索引是单列的,则该列的值为 1;如果索引是组合索引,则该列的值为每列在索引定义中的顺序。
Column_name表示定义索引的列字段。
Collation表示列以何种顺序存储在索引中。在 My**L 中,升序显示值“A”(升序),若显示为 NULL,则表示无分类。
Cardinality索引中唯一值数目的估计值。基数根据被存储为整数的统计数据计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,My**L 使用该索引的机会就越大。
Sub_part表示列中被编入索引的字符的数量。若列只是部分被编入索引,则该列的值为被编入索引的字符的数目;若整列被编入索引,则该列的值为 NULL。
Packed指示关键字如何被压缩。若没有被压缩,值为 NULL。
Null用于显示索引列中是否包含 NULL。若列含有 NULL,该列的值为 YES。若没有,则该列的值为 NO。
Index_type显示索引使用的类型和方法(BTREE、FULLTEXT、HASH、RTREE)。
Comment显示评注。

如何查询数据库或者表中的索引

oracle对于数据库中的表信息,存储在系统表中。查询已创建好的表索引,可通过相应的sql语句到相应的表中进行快捷的查询:
1.
根据表名,查询一张表的睁猜索引
select
*
from
user_indexes
where
table_name=upper(’表名’);
2.
根据索引号,查询表索引字段
select
*
from
user_ind_columns
where
index_name=(’索引名’);
3.根据索引名,查询创建索引的语句
select
dbms_*****_ddl(’index’,’索引名’,
)
from
dual
;
--可省,默认为登录用户
ps:dbms_*****_ddl还可以得到建表语句,拿早衡如:
select
dbms_*****_ddl(’table’,’表名’,
)
from
dual
;
//取单个表的建表语句,可不输入,默认为登录用户
select
dbms_*****_ddl(’table’,*****_name)
from
user_tables
u;
//取用户下所有表的建表语句
当然,也可以用pl/sql
developer工具来查看相关的表的各种信息。

如何查找My**L中查询慢的**L语句

问题

我们纳搭腔有一个 **L,用于找到没有主键 / 唯一键的表,但是在 My**L *** 上运行特别慢,怎么办?

实验

我们搭建一个 My**L *** 的环境,此处省略搭建步骤。

写个简单的脚本,制造一批带主键和不带主键的表:

执行一下脚本:

现在执行以下 **L 看看效果:

...

执行了 *****,感觉是非常慢了。

现在用一下 DBA 三板斧,看看执行计划:

感觉有点惨,由于 information_***** 是元数据表,没有必要的统计信息。

那我们来 show warnings 看看 My**L 改写后的 **L:

我们格式化一下 **L:

可以看到 My**L 将

select from A where *** not in (select x from B) //非关联子查询

转换成了

select from A where not exists (select 1 from B where *** = ***) //关联子查询

如果我们自己是 My**L,在执行非关联子查询时,可以使用很简单的策略:

select from A where *** not in (select x from B where ...) //非关联子查询:1. 扫描 B 表中的所有记录,找到满洞衫足条件的记录,存放在临时表 C 中,建好索引2. 扫描 A 表中的记录,与临时表 C 中的记录进行比对,直接在索引里比对,

而关联子查询就需要循环迭代:

select from A where not exists (select 1 from B where *** = *** and ...) //关联子查询扫描 A 表的每一条记录 rA:     扫描 B 表,找到其中的第一条满足 rA 条件的记录。

显然,关联子查询的扫描成本会高于非关联子查询。

我们希望 My**L 能先"缓存"子查询的结果(缓存这一步叫物化,MATERIALIZATION),但My**L 认为不缓存更快,我们就需要给枝袭予 My**L 一定指导。

...

可以看到执行时间变成了 *****。

整理

我们诊断的关键点如下:

\1. 对于 information_schema 中的元数据表,执行计划不能提供有效信息。

\2. 通过查看 My**L 改写后的 **L,我们猜测了优化器发生了误判。

\3. 我们增加了 hint,指导 My**L 正确进行优化判断。

但目前我们的实验仅限于猜测,猜中了万事大吉,猜不中就无法做出好的诊断。

如何检查mysql中建立的索引是否生效的检测

explain显示了My**L如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。

使用方法,在select语句前加上explain就可以了:

如:

explain select surname,first_name form a,b where ****=****

EXPLAIN列的解释:

table:显示这一行的数据是关于哪张表的

type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为c***t、eq_reg、ref、range、indexhe和ALL

possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句

key: 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MY**L会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MY**L忽略索引

key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好

ref:显示索引的哪一列被使用了,如果可能的话,是一个常数

rows:MY**L认为必须检查的用来返回请求数据的行数

Extra:关于MY**L如何解析查询的额外信息。将在表***中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MY**L根本不能使用索引,结果是检索会很慢

extra列返回的描述的意义

Distinct:一旦MY**L找到了与行相联合匹配的行,就不再搜索了

Not exists: MY**L优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,就不再搜索了

Range checked for each Record(index map:#):没有找到理想的索引,因此对于从前面表中来的每一个行组合,MY**L检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一

Using filesort: 看到这个的时候,查询就需要优化了。MY**L需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行

Using index: 列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候

Using temporary 看到这个的时候,查询需要优化了。这里,MY**L需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上

Where used 使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index,这就会发生,或者是查询有问题不同连接类型的解释(按照效率高低的顺序排序)

system 表只有一行:system表。这是c***t连接类型的特殊情况

c***t:表中的一个记录的最大值能够匹配这个查询(索引可以是主键或惟一索引)。因为只有一行,这个值实际就是常数,因为MY**L先读这个值然后把它当做常数来对待

eq_ref:在连接中,MY**L在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用

ref:这个连接类型只有在查询使用了不是惟一或主键的键或者是这些类型的部分(比如,利用最左边前缀)时发生。对于之前的表的每一个行联合,全部记录都将从表中读出。这个类型严重依赖于根据索引匹配的记录多少—越少越好

range:这个连接类型使用索引返回一个范围中的行,比如使用》或《查找东西时发生的情况

index: 这个连接类型对前面的表中的每一个记录联合进行完全扫描(比ALL更好,因为索引一般小于表数据)

ALL:这个连接类型对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,应该尽量避免

mysql怎么查询执行sql的记录

-- 打开sql 执行记录辩雀功能

set global log_output=’TABLE’; -- 输出到表

set global log=ON; -- 打开所有命令

执行记录功能general_log, 所有语句: 成功和未成升源功的.

set global log_slow_queries=ON; -- 打开慢查询 sql 记录

slow_log, 执行成功的: 慢查询语句和未使用索引的语句

set global long_query_time=***; -- 慢查询时间限制(秒)

set global log_queries_not_using_indexes=ON; -- 记录未使用索引的sql 语句

-- 查询sql 执行吵灶态记录

select * from *****_log order by 1; -- 执行成功的:慢查询语句,和未

使用索引的语句

select * from *****_log order by 1; -- 所有语句: 成功和未成功的.-- 关闭sql 执行记

怎么查看mysql 索引使用情况

假如你有一个表,
**L》 CREATE TABLE test_tab (2 id INT,
3 name VARCHAR(10),
4 age INT,
5 val VARCHAR(10)6 );你的业务,有一个查询,是
SELECT * FROM test_tab WHERE name = 一个外部输入的数据
刚开始,数据不多的时候,执行效果还不错。
随着数据量的增加,这个查询,执行起来,越来越慢了。
然后在 name 上面 建立了索引
CREATE INDEX idx_test4_name ON test_tab (name );
这样, 可以加快前面那个查询的速度。
但是,某天,你执行了下面这个**L, 发现速度又慢了
SELECT * FROM test_tab WHERE age = 25
为啥呢? 因为 age 字段上面,没有索引
索引只在 name 上面有
换句话说, 也就是 WHERE 里面的条件, 会自动判断,有没有 可用的索引,如果有, 该不该用。
多列索引,就是一个索引,包含了2个字段。
例如:CREATE INDEX idx_test_name_age ON test_tab (name, age);那么SELECT * FROM test_tabWHEREname LIKE ’张%’
AND age = 25
这样的查询,将能够使用上面的索引。
多列索引,还有一个可用的情况就是, 某些情况下,可能查询,只访问索引就足够了, 不需要再访问表了。例如:SELECT**G( avg ) AS 平均年龄FROMtest_tabWHEREname LIKE ’张%’
这个时候, name 与 age 都包含在索引里面。 查询不需要去检索表中的数据。

mysql 查看索引 出来的这些 列分别代表什么 有谁知道吗

首先show index from user指显示出user这个表中的索引
table : 表的名称
Non_unique : 如果该列索引中不包括重复的值则为0 否则为1
Key_name : 索引名称,如果是主键的话 则为PRIMARY
Seq_in_index : 索引中序列的序列号,从1开始,如果是组合索引 那么按照字段在建立索引时的顺序排列 如 (’c1’, ’c2’, ’c3’) 那么 分别为 1, 2, 3
Column_name : 列的名称
Collation : 列以什么方式存储在索引中。在My**L中,有值‘A’(升序)或NULL(无分序)
Cardinality : 索引中唯一值的数目的估计值,通过运行 ANALYZE TABLE or myisamchk -a 来更新,基数根据被存储为整数的统计数据来计数,所以对于小表该值没必要太过于精确,而对于大数据量的表来说,改值越大当进行联合时,My**L使用该索引的机 会就越大。
Sub_part : 索引的长度,如果是部分被编入索引 则该值表示索引的长度 ,如果是整列被编入索引则为null,例如name_Index和school_Index 两个索引,比较一下上面两个索引创建时候的区别
Packed : 指示关键字如何被压缩。如果没有被压缩,则为NULL
Null : 如果该列的值有NULL,则是YES 否则为NO..
Index_type : 所用索引方法(BTREE, FULLTEXT, HASH, RTREE)
Commnet : 关于在其列中没有描述的索引的信息
Index_comment : 为索引创建时提供了一个注释属性的索引的任何评论

怎么查看一个sql语句是否使用了索引

1、首先打开PL/**L,并进行登录。

2、打羡雹开**L window窗口,输入需要查询的表名。

3、右击表名选择右击菜单中edit选项。

4、点击indexes选项,进入到索引查看tab页物派搭面。

5、在这里可以查罩拿看到这个表目前已经创建的索引有哪些,可以在这里直接修改,也可以通过sql语句进行修改。

mysql添加索引后在查询的时候是mysql自动从索引里面查询还是查询的时候有单独的参数查询索引

MY**L在创建索引后对索引的使用方式分为两种:
1 由数据库的查询优化器自动判断是否使用索引;
2 用户可在写**L语句时强制使用索引
下面就两种索引使用方式进行说明
第一种,自动使用索引。数据库在收到查询语句后会查看where语句后面的查询条件,同时查看在表上面有哪些索引,然后根据查询条件和索引进行匹配。
查询条件和索引的匹配包括查询字段与索引字段的匹配和查询类型和索引类型的匹配。前者很好理解,就是查询条件的属性上要建有索引,后者则是说查询条件必须能够使用索引,比如等值判断和范围查询可以使用B+树索引,而hash索引只能适用于等值判断。
在找到与查询条件匹配的索引后,就是进行代价估计来决定是否使用索引,代价估计主要根据要访问的就数量,一般来说如果通过索引访问的记录数量占全表记录数量15%以上,则不会使用索引而是使用全表扫描,因为此时使用索引的代价更大。在大多数情况下使用索引是会提高效率的。
经过优化器的判断,最终会决定是否使用索引

第二种,强制使用索引,主要是通过**L语句实现的
select * from table force index(PRI) limit 2;(强制使用主键)
select * from table force index(ziduan1_index) limit 2;(强制使用索引"ziduan1_index")
select * from table force index(PRI,ziduan1_index) limit 2;(强制使用索引"PRI和ziduan1_index")
也可以禁止索引的使用
select * from table ignore index(PRI) limit 2;(禁止使用主键)
select * from table ignore index(ziduan1_index) limit 2;(禁止使用索引"ziduan1_index")
select * from table ignore index(PRI,ziduan1_index) limit 2;(禁止使用索引"PRI,ziduan1_index")

感谢你读完这篇关于mysql查看索引如何查看mysql数据库的引擎的长文。学习路上,你我同行,共勉!
本文编辑:admin

更多文章:


位与运算符是&还是|?位运算符

位与运算符是&还是|?位运算符

今天给各位分享位与运算符是&还是|的知识,其中也会对位与运算符是&还是|进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年5月8日 22:40

梦幻西游官方网站是?梦幻西游官方网是什么

梦幻西游官方网站是?梦幻西游官方网是什么

从一个常见的误区说起:很多人学梦幻建站网,却忽略了梦幻西游官方网站是。结果事倍功半。希望你不会再犯这个错误。

2026年5月8日 22:20

手机直播原生源码可以搭建哪些直播app当中的功能?备忘录版李峋爱心代码 李峋爱心代码可复制链接

手机直播原生源码可以搭建哪些直播app当中的功能?备忘录版李峋爱心代码 李峋爱心代码可复制链接

我们注意到,那些在独爱源码上表现突出的人,往往都对手机直播原生源码可以搭建哪些直播app当中的功能有独到的见解。这并非巧合。

2026年5月8日 22:00

javaurl解码(在java中%c0%ae经过url解码为什么会变成)

javaurl解码(在java中%c0%ae经过url解码为什么会变成)

本篇内容旨在成为您理解javaurl解码的实用手册,其中在java中%c0%ae经过url解码为什么会变成将是我们要重点打磨的章节。

2026年5月8日 21:40

mysql查看索引(如何查看mysql数据库的引擎)

mysql查看索引(如何查看mysql数据库的引擎)

当我们讨论mysql查看索引时,我们真正需要关注的是什么?很多高手的答案都指向了:如何查看mysql数据库的引擎。为什么?

2026年5月8日 21:20

domestic怎么读(domestic什么意思)

domestic怎么读(domestic什么意思)

大家好,关于domestic怎么读很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于domestic什么意思的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年5月8日 21:00

web中textarea是什么意思(web编程的进!为什么说传递一个form要安全些form是个怎么样的数据结构)

web中textarea是什么意思(web编程的进!为什么说传递一个form要安全些form是个怎么样的数据结构)

曾几何时,我也觉得web中textarea是什么意思高不可攀,尤其web编程的进!为什么说传递一个form要安全些form是个怎么样的数据结构更是一头雾水。后来才发现,只是没找对方法,希望我的经验能帮到你。

2026年5月8日 20:40

pip不是内部或外部命令怎么解决(pip不是内部或外部命令 怎么解决)

pip不是内部或外部命令怎么解决(pip不是内部或外部命令 怎么解决)

在了解pip不是内部或外部命令怎么解决的过程中,您是否也曾对pip不是内部或外部命令 怎么解决感到困惑?别担心,接下来我将结合常见场景,带您一步步理清其中的关键点。

2026年5月8日 20:20

linux cpu信息(如何查看linux系统CPU信息)

linux cpu信息(如何查看linux系统CPU信息)

本篇文章给大家谈谈linux cpu信息,以及如何查看linux系统CPU信息对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年5月8日 20:00

createnewfile怎么理解(android 下载文件的时候 createNewFile 怎么回事java.io.IOException: No such file or directory)

createnewfile怎么理解(android 下载文件的时候 createNewFile 怎么回事java.io.IOException: No such file or directory)

结合最近的趋势来看,createnewfile怎么理解的热度持续攀升,而android 下载文件的时候 createNewFile 怎么回事java.io.IOException: No such file or directory作为其核

2026年5月8日 19:40

最近更新

位与运算符是&还是|?位运算符
2026-05-08 22:40:04 浏览:0
domestic怎么读(domestic什么意思)
2026-05-08 21:00:02 浏览:0
createnewfile怎么理解(android 下载文件的时候 createNewFile 怎么回事java.io.IOException: No such file or directory)
2026-05-08 19:40:01 浏览:0
热门文章

split函数 sql(求sql split函数的用法)
2026-03-26 20:40:01 浏览:1
标签列表