MySQL Workbench 是 MySQL 的官方图形化工具,用于设计、开发和管理 MySQL 数据库。在 MySQL Workbench 中,你可以创建和管理数据库、表、索引等,以及执行 SQL 查询和进行性能分析。
关于 MySQL 索引,索引是数据库中用于加速查询的数据结构。通过创建索引,数据库系统可以快速地定位到表中的数据,而不是逐行扫描整个表。这大大提高了查询的效率。
在 MySQL Workbench 中,你可以通过以下步骤创建和管理索引:

  1. 打开 MySQL Workbench 并连接到你的数据库
  2. 在左侧的导航窗格中,展开你的数据库,找到你想要为其创建索引的表。
  3. 右键点击该表,选择 “Alter Table”。
  4. 在打开的窗口中,你可以看到该表的结构。在 “Indexes” 部分,你可以看到现有的索引。
  5. 点击 “Add Index”,然后输入索引的名称和列名。你还可以选择索引的类型(例如,B-tree, HASH 等)。
  6. 完成后点击 “Apply”。Workbench 将显示一个 SQL 语句,描述了所做的更改。你可以查看并确认这个语句。
  7. 点击 “Apply” 执行 SQL 语句,这将创建新的索引。
    此外,你还可以在 SQL 查询编辑器中直接编写 ALTER TABLE 语句来添加索引。例如:
ALTER TABLE your_table_name ADD INDEX index_name (column_name);

请注意,虽然索引可以提高查询性能,但它们也会占用额外的磁盘空间,并可能增加插入、更新和删除操作的时间。因此,你应该根据实际需要谨慎地创建索引。此外,索引的创建和维护也需要数据库系统的额外开销。因此,在决定是否创建索引以及在哪些列上创建索引时,需要综合考虑查询性能、存储空间、维护成本以及系统负载等多个因素。

在 MySQL Workbench 中,你还可以查看索引的使用情况,以便了解哪些索引在实际查询中被频繁使用,哪些索引可能不再需要。你可以通过 “Explain” 语句来分析查询的执行计划,了解索引如何被用来加速查询。

总的来说,正确地使用和管理索引是数据库性能优化的关键部分。通过仔细考虑和测试,你可以选择出最合适、最高效的索引策略,从而提高你的数据库应用的性能。另外,除了基本的索引外,MySQL 还支持其他类型的索引,如唯一索引、全文索引、空间索引等。这些索引都有各自的应用场景和特点,可以根据实际需求选择使用。

例如,唯一索引确保索引列的值是唯一的,这可以用于实现唯一标识符,如用户ID或电子邮件地址。全文索引则适用于文本搜索,可以大大提高文本搜索的性能。空间索引则用于地理空间数据的查询,如点、线和多边形等。

在 MySQL Workbench 中,你可以通过图形界面轻松创建和管理这些不同类型的索引。同时,通过 “Explain” 语句和执行计划的分析,你可以了解这些索引在实际查询中的效果,并根据需要进行优化。

最后,请注意,尽管索引可以提高查询性能,但并不是越多越好。过多的索引会增加数据的插入、更新和删除操作的开销,并占用更多的磁盘空间。因此,你需要根据实际需求和数据库的使用情况,定期评估和调整索引策略。

MySQL Workbench 怎么看历史执行sql mysql workbench查询_数据库

MySQL 索引
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。
拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
建立索引会占用磁盘空间的索引文件。

CREATE TABLE test_NO1(
test_NO1_id INT NOT NULL AUTO_INCREMENT,
test_NO1_title VARCHAR(100) NOT NULL,
test_NO1_author VARCHAR(40) NOT NULL,
test_NO1_date DATE,
PRIMARY KEY ( test_NO1_id )
)ENGINE=InnoDB;

drop table test_no1;


INSERT INTO test_NO1 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb", "welcome to programb", NOW());
    
    
select * from test_NO1;


INSERT INTO test_NO1 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb2", "welcome to programb2", NOW());
    
INSERT INTO test_NO1 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb3", "welcome to programb3", NOW());
    
    

SELECT * from test_NO1  WHERE test_NO1_title='programb2';

SELECT * from test_NO1;

update test_NO1 SET test_NO1_title='programb100' WHERE test_NO1_id=1;

SELECT * from test_NO1 where test_NO1_id=1;

SELECT * from test_NO1;

DELETE FROM test_NO1 WHERE test_NO1_id=1;

SELECT * from test_NO1;

 SELECT * from test_NO1  WHERE test_NO1_title LIKE '%programb2';
 
 INSERT INTO test_NO1 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb2", "welcome.to.programb2", NOW());
 
 SELECT * from test_NO1  WHERE test_NO1_author LIKE '%programb2';
 
 SELECT * from test_NO1  WHERE test_NO1_author LIKE '%to%';
 
 SELECT * from test_NO1  WHERE test_NO1_author LIKE 'welcome%';
 
 SELECT * from test_NO1;
 
 CREATE TABLE test_NO2(
test_NO1_id INT NOT NULL AUTO_INCREMENT,
test_NO1_title VARCHAR(100) NOT NULL,
test_NO1_author VARCHAR(40) NOT NULL,
test_NO1_date DATE,
PRIMARY KEY ( test_NO1_id )
)ENGINE=InnoDB;

 INSERT INTO test_NO2
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb2", "welcome.to.programb2", NOW());
    
 SELECT * from test_NO2;
 
 SELECT test_NO1_author FROM test_no1
 UNION
 SELECT test_NO1_author FROM test_no2
 ORDER BY test_NO1_author; 
 
  SELECT test_NO1_author FROM test_no1
 UNION all
 SELECT test_NO1_author FROM test_no2
 ORDER BY test_NO1_author; 
 
 
select * from test_no1 order by test_NO1_date asc;

INSERT INTO test_NO1 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb4", "welcome to programb4", NOW());
    
INSERT INTO test_NO1 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb5", "welcome to programb5", NOW());
    
select * from test_no1 order by test_NO1_date asc;

select * from test_no1 order by test_NO1_date desc;

select test_NO1_title, count(*) from test_no1 group by test_NO1_title;

select test_NO1_title, sum(test_NO1_id)  from test_no1 group by test_NO1_title;

select test_NO1_title, avg(test_NO1_id)  from test_no1 group by test_NO1_title;

SELECT * from test_NO1;

SELECT * from test_no2;

INSERT INTO test_NO2 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb4", "welcome to programb4", NOW());
    
INSERT INTO test_NO2 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb2", "welcome to programb2", NOW());
    
SELECT * from test_no2;

select t1.test_NO1_title, t2.test_NO1_date from test_no1 t1, test_no2 t2 where t1.test_NO1_date=t2.test_NO1_date;

select t1.test_NO1_title, t2.test_NO1_date from test_no1 t1 left join test_no2 t2 on t1.test_NO1_date=t2.test_NO1_date;

select t1.test_NO1_title, t2.test_NO1_date from test_no1 t1 right join test_no2 t2 on t1.test_NO1_date=t2.test_NO1_date;


SELECT * from test_no2;

INSERT INTO test_NO2 
    (test_NO1_title, test_NO1_author, test_NO1_date )
    VALUES
    ("programb2", "welcome", NOW());

SELECT * from test_no2;

select * from test_no2 where test_NO1_author is null;


INSERT INTO test_NO2 
    (test_NO1_title, test_NO1_author )
    VALUES
    ("programb2", "welcome");

INSERT INTO test_NO2 
    (test_NO1_title, test_NO1_author )
    VALUES
    ("programb2", "welcome");

INSERT INTO test_NO2 
    (test_NO1_title, test_NO1_author )
    VALUES
    ("programb2", "welcome");

SELECT * from test_no2;

select * from test_no2 where test_NO1_date is null;

select * from test_no2 where test_NO1_date is not null;

select * from test_no1 where test_NO1_title regexp '^pro';

select * from test_no1 where test_NO1_title regexp '2$';

select * from test_no1 where test_NO1_title regexp 'gra';

select * from test_no1 where test_NO1_title regexp '^[pro]|5$';

begin;

insert into  test_NO1(test_NO1_title, test_NO1_author ) value("pro","welcome");
insert into  test_NO1(test_NO1_title, test_NO1_author ) value("pro","welcome");
insert into  test_NO1(test_NO1_title, test_NO1_author ) value("pro","welcome");
insert into  test_NO1(test_NO1_title, test_NO1_author ) value("pro","welcome");
insert into  test_NO1(test_NO1_title, test_NO1_author ) value("pro","welcome");
insert into  test_NO1(test_NO1_title, test_NO1_author ) value("pro","welcome");

commit;

SELECT * from test_NO1;


show columns from test_no1;

alter table test_no1 alter test_NO1_author set default 1000;

alter table test_no1 modify test_NO1_author  varchar(100);

show columns from test_no1;

alter table test_no1 drop  test_NO1_author;

show columns from test_no1;

alter table test_no1 add test_NO1_author int first;

show columns from test_no1;

alter table test_no1 drop  test_NO1_author;

alter table test_no1 add test_NO1_author int;

show columns from test_no1;

alter table test_no1 drop  test_NO1_author;

alter table test_no1 add test_NO1_author varchar(100);

CREATE TABLE test_no3(ID INT NOT NULL,username VARCHAR(16) NOT NULL, INDEX username2 (username(12)));  

show columns from test_no3;

SELECT * from test_no3;

select username from test_no3;

SHOW INDEX FROM test_no3;

DROP INDEX username2 ON test_no3; 

SHOW INDEX FROM test_no3;

ALTER TABLE test_no3 ADD INDEX (username);

 ALTER TABLE test_no3 DROP INDEX username;
CREATE TABLE test_no3(ID INT NOT NULL,username VARCHAR(16) NOT NULL, INDEX username2 (username(12)));  

show columns from test_no3;

SELECT * from test_no3;

select username from test_no3;

SHOW INDEX FROM test_no3;

DROP INDEX username2 ON test_no3; 

SHOW INDEX FROM test_no3;

ALTER TABLE test_no3 ADD INDEX (username);

 ALTER TABLE test_no3 DROP INDEX username;

MySQL Workbench 怎么看历史执行sql mysql workbench查询_数据库_02


MySQL Workbench 怎么看历史执行sql mysql workbench查询_SQL_03


MySQL Workbench 怎么看历史执行sql mysql workbench查询_数据库_04


MySQL Workbench 怎么看历史执行sql mysql workbench查询_SQL_05


MySQL Workbench 怎么看历史执行sql mysql workbench查询_SQL_05


MySQL Workbench 怎么看历史执行sql mysql workbench查询_MySQL_07


MySQL Workbench 怎么看历史执行sql mysql workbench查询_数据库_08