我有一个非常大的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,这可能会有所帮助.这可能是问题的根源吗?
如果我有一个功能:
function this($a){
return $a;
}
Run Code Online (Sandbox Code Playgroud)
如果我想重新定义函数,它会像重写它一样简单吗?
function this($a, $b){ //New this function
return $a * $b;
}
Run Code Online (Sandbox Code Playgroud)