What is an index in SQL? Can you explain or reference to understand clearly?
Where should I use an index?
我有一个非常大的MySQL表,大约有150,000行数据.目前,当我尝试并运行时
SELECT * FROM table WHERE id = '1';
Run Code Online (Sandbox Code Playgroud)
代码运行正常,因为ID字段是主索引.但是,最近对于项目的开发,我必须通过另一个字段搜索数据库.例如
SELECT * FROM table WHERE product_id = '1';
Run Code Online (Sandbox Code Playgroud)
此字段以前没有编入索引,但是,我已将其添加为索引,但是当我尝试运行上述查询时,结果非常慢.EXPLAIN查询显示,当我已经添加了一个索引时,product_id字段没有索引,因此查询从20分钟到30分钟的任何位置返回单行.
我的完整EXPLAIN结果是:
| id | select_type | table | type | possible_keys| key | key_len | ref | rows | Extra |
+----+-------------+-------+------+--------------+------+---------+------+-------+------------------+
| 1 | SIMPLE | table | ALL | NULL | NULL | NULL | NULL |157211 | Using where |
+----+-------------+-------+------+--------------+------+---------+------+-------+------------------+
Run Code Online (Sandbox Code Playgroud)
注意我刚看了一眼,ID字段存储为INT,而PRODUCT_ID字段存储为VARCHAR,这可能会有所帮助.这可能是问题的根源吗?
我对MySQL索引的工作方式非常感兴趣,更具体地说,他们如何在不扫描整个表的情况下返回所请求的数据?
我知道,这是偏离主题的,但如果有人可以向我详细解释这一点,我将非常非常感谢.
我很好奇为什么df[2]不受支持,df.ix[2]而且df[2:3]两者都有效.
In [26]: df.ix[2]
Out[26]:
A 1.027680
B 1.514210
C -1.466963
D -0.162339
Name: 2000-01-03 00:00:00
In [27]: df[2:3]
Out[27]:
A B C D
2000-01-03 1.02768 1.51421 -1.466963 -0.162339
Run Code Online (Sandbox Code Playgroud)
我期望df[2]以df[2:3]与Python索引约定一致的方式工作.是否存在不支持单个整数索引行的设计原因?
我正在尝试替换字符串中特定索引处的字符.
我在做的是:
String myName = "domanokz";
myName.charAt(4) = 'x';
Run Code Online (Sandbox Code Playgroud)
这给出了一个错误.有没有办法做到这一点?
例如,如果我想从中读取中间值magic(5),我可以这样做:
M = magic(5);
value = M(3,3);
Run Code Online (Sandbox Code Playgroud)
得到value == 13.我希望能够做到这样的事情之一:
value = magic(5)(3,3);
value = (magic(5))(3,3);
Run Code Online (Sandbox Code Playgroud)
免除中间变量.然而,MATLAB抱怨Unbalanced or unexpected parenthesis or bracket在第一个括号之前3.
是否可以在不首先将其分配给变量的情况下从数组/矩阵中读取值?
我在对文件进行一些编辑后尝试将csv保存到文件夹中.
每次我使用pd.to_csv('C:/Path of file.csv')csv文件都有一个单独的索引列.我想避免将索引打印到csv.
我试过了:
pd.read_csv('C:/Path to file to edit.csv', index_col = False)
Run Code Online (Sandbox Code Playgroud)
并保存文件...
pd.to_csv('C:/Path to save edited file.csv', index_col = False)
Run Code Online (Sandbox Code Playgroud)
但是,我仍然得到了不需要的索引列.保存文件时如何避免这种情况?
如何获取SQL Server 2005+中所有索引和索引列的列表?我能得到的最接近的是:
select s.name, t.name, i.name, c.name from sys.tables t
inner join sys.schemas s on t.schema_id = s.schema_id
inner join sys.indexes i on i.object_id = t.object_id
inner join sys.index_columns ic on ic.object_id = t.object_id
inner join sys.columns c on c.object_id = t.object_id and
ic.column_id = c.column_id
where i.index_id > 0
and i.type in (1, 2) -- clustered & nonclustered only
and i.is_primary_key = 0 -- do not include PK indexes
and i.is_unique_constraint = 0 -- do not include UQ …Run Code Online (Sandbox Code Playgroud) 在R中,我有一个元素x和一个向量v.我想找到一个元素的第一个索引v,它等于x.我知道这样做的一种方法是:which(x == v)[[1]],但这似乎效率过低.有更直接的方法吗?
对于奖励积分,是否有一个功能,如果x是一个矢量?也就是说,它应该返回一个索引向量,指示xin 的每个元素的位置v.
我有一个数据框,我从中删除了一些行.结果,我得到一个数据框,其中索引是这样的:[1,5,6,10,11]我想将其重置为[0,1,2,3,4].我该怎么做?
以下似乎有效:
df = df.reset_index()
del df['index']
Run Code Online (Sandbox Code Playgroud)
以下不起作用:
df = df.reindex()
Run Code Online (Sandbox Code Playgroud)