MySQL联表查询的索引使用

MySQL联表查询的索引使用,第1张

一共3张表 knowledge , knowledge_question , knowledge_answer ,数据在 6000~10000 之间。 执行的语句: 执行时间约 10分钟 ,查看执行计划如下: 全部都是全表扫描,根据MySQL联表查询的算法 Nested-Loop Join ,MySQL查询的结果集是3张表的笛卡尔积,所以效率特别低。 耗时变成 20毫秒给Where条件建立索引,并不一定会使用。 比如:在表 knowledge 的字段 update 上建立索引 idx_time : 结果执行上来看,并没有使用索引 idx_time 。 如果where条件从 k.update_time>'2019-01-03 12:00:00' 修改为 k.update_time='2019-01-03 12:00:00' (从 >变成 = ) 则会使用索引 idx_time在建立索引的时候,会遇到 Table Metadata Lock 的问题,可以先 show processlist ,找到占用表锁的连接,然后 kill 。

工具:mysql数据库创建一个user的表里边的字段1.普通索引 添加INDEXALTER TABLE `table_name` ADD INDEX index_name ( `column` )下面演示下给user表的name字段添加一个索引2.主键索引 添加PRIMARY KEYALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )3.唯一索引添加UNIQUEALTER TABLE `table_name` ADD UNIQUE ( `column` )4.全文索引添加FULLTEXTALTER TABLE `table_name` ADD FULLTEXT ( `column`)5.如何添加多列索引ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

mysql 如何给SQL添加索引

1.添加PRIMARY KEY(主键索引)

alter table `table_name` add primary key(`column`)

2.添加UNIQUE(唯一索引)

alter table `table_name` add unique(`column`)

3.添加普通索引

alter table `table_name` add index index_name(`column`)

4.添加全文索引

alter table `table_name` add fulltext(`column`)

5.添加多列索引

alter table `table_name` add index index_name(`column1`,`column2`,`column3`)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7504298.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-06
下一篇2023-04-06

发表评论

登录后才能评论

评论列表(0条)

    保存