草庐IT

Indexing

全部标签

mysql - 将索引添加到 MySQL 中的 BIGINT 列会有所帮助吗?

我有一个包含数百万个条目的表,以及一个包含每行唯一的BIGINT(20)值的列。它们不是主键,但在某些操作期间,有数千个SELECT在WHERE子句中使用此列。问:当条目数量增长到数百万时,向该列添加索引是否有帮助?我知道它适用于文本值,但我不熟悉索引对INT或BIGINT的作用。将发生数千次的示例SELECT与此类似:`SELECT*FROMtable1WHEREmy_big_number=19287319283784 最佳答案 如果您有一个非常大的表,那么搜索未索引的值可能会非常慢。在MySQL术语中,这种查询最终成为“表扫描”

MIN 和 MAX 的 MySQL 索引

任何人都可以从官方MySQLdocumentation澄清这一点吗?Indexesareused...TofindtheMIN()orMAX()valueforaspecificindexedcolumnkey_col.ThisisoptimizedbyapreprocessorthatcheckswhetheryouareusingWHEREkey_part_N=constantonallkeypartsthatoccurbeforekey_colintheindex.Inthiscase,MySQLdoesasinglekeylookupforeachMIN()orMAX()exp

mysql - 为什么 MySQL 不在用作 bool 值的 int 字段上使用索引?

select*frommyTablewheremyInt即使在myInt字段上有索引,在解释查询时也不会显示任何possible_keys。编辑:有问题的索引不是唯一的。 最佳答案 要让MySQL使用索引,您必须明确地将int字段与一个值(例如true,1)进行比较。select*frommyTablewheremyInt=true 关于mysql-为什么MySQL不在用作bool值的int字段上使用索引?,我们在StackOverflow上找到一个类似的问题:

sql - Mysql索引被忽略

EXPLAINSELECT*FROMcontent_linklinkSTRAIGHT_JOINcontentONlink.content_id=content.idWHERElink.content_id=1LIMIT10;+----+-------------+---------+-------+---------------+------------+---------+-------+------+-------+|id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra|+----+----------

sql - MySQL - 通过索引防止表中的重复记录?

使用MySQL5我有一个这样的表:date(varchar)door(varchar)shift(varchar)route(varchar)trailer(varchar)+otherfields此表包含用户生成的内容(从另一个“主”表复制过来),为了防止用户创建超过1倍的相同数据,该表具有基于上述指定字段创建的唯一索引。问题是“防重复”索引不起作用。用户仍然可以添加重复记录而不会报告错误。这个问题是因为我不了解索引的工作原理吗?或者是否可能与主键字段(autoincrementingint)冲突?创建表看起来像这样:CREATETABLE/*!32312IFNOTEXISTS*/"

mysql - 如何更新表以添加主键并使用递增的 ID 更新所有现有行?

我有一个表,其中包含我导入的20,000行数据,但我忘记在上面放置一个主键,以便每一行都有一个唯一的键。我希望第一行从ID1开始,一直递增到最后一行并在ID20000结束。如何使用单个查询更新所有行?我正在使用MySQL。已尝试使用PhpMyAdmin,但它不会这样做。 最佳答案 添加新的ID列后(暂时不要设置为主键,也不要开启自增)运行:SET@index=1;UPDATEtablenameSETID=(@index:=@index+1);这会在每个现有行上设置一个从1开始递增的ID值,从而解决在输入数据后尝试插入新的主键列时将面

mysql - 创建表时创建索引

我可以在CREATETABLE语句上创建索引吗?IE。我可以在创建表时为表定义索引吗?我的意思是在createstamementsql命令上创建索引 最佳答案 是的,可以在CREATETABLE中定义,约定是将这些定义放在列表的末尾。CREATETABLE`example`(`id`INTEGERNOTNULLAUTO_INCREMENT,`index_col`VARCHAR(20),PRIMARYKEY(`id`),INDEX`index_name`(`index_col`)) 关于m

mysql - 在 MYSQL 中,当存在重复索引且除 key_name 之外的所有内容都相同时,这意味着什么?

describeetc_category_metadata;+---------------------+---------------+------+-----+---------+----------------+|Field|Type|Null|Key|Default|Extra|+---------------------+---------------+------+-----+---------+----------------+|id|int(11)|NO|PRI|NULL|auto_increment||user_id|bigint(20)|NO||NULL|||tim

mysql - MySQL索引中的 'name'和 'symbol'是什么?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion主键定义可以有一个可选的符号值,而唯一键可以同时有符号和名称。这些是什么,它们的区别是什么?使用它们的最佳做法是什么?

mysql - 将索引添加到大型 mysql 表的最有效方法

我有一个mysql数据库,其中有一个特定的表,该表有超过600万行并且没有索引。诸如SELECT...FROMlogORDERBYlog_dateASC之类的简单查询将花费NotAcceptable时间。我显然需要向表中添加索引,但不确定最有效的方法。1)我的第一个选择是发出ALTERTABLElogADDINDEXlog_date,但我不确定这需要多长时间...它会花费与之前的查询?如果是这样,这是NotAcceptable。2)我的第二个选择是导出表,TRUNCATE表,发出ALTERTABLE语句,然后重新导入表数据。我不确定重新导入数据需要多长时间,并且担心如果系统在此过程中尝