Php MySQL在从多行中选择时性能较慢
我的表中有4000多行数据。我注意到,当我试图从mysql工作台获取所有行时,它变得非常慢,甚至冻结 经过一些尝试和错误后,我注意到,如果选择的行数超过1544行,则性能将冻结/降低Php MySQL在从多行中选择时性能较慢,php,mysql,mysql-workbench,Php,Mysql,Mysql Workbench,我的表中有4000多行数据。我注意到,当我试图从mysql工作台获取所有行时,它变得非常慢,甚至冻结 经过一些尝试和错误后,我注意到,如果选择的行数超过1544行,则性能将冻结/降低 SELECT * FROM users LIMIT 1544; 编辑 以下是运行DESC Users Field, Type, Null, Key, Default, Extra 'id', 'int(10) unsigned','NO','PRI',
SELECT * FROM users LIMIT 1544;
编辑
以下是运行DESC Users
Field, Type, Null, Key, Default, Extra
'id', 'int(10) unsigned','NO','PRI',NULL, 'auto_increment'
'email', 'varchar(255)', 'NO', '', NULL, ''
'password', 'varchar(255)', 'YES', '', NULL, ''
'first_name', 'varchar(255)', 'YES', '', NULL, ''
'last_name', 'varchar(255)', 'YES', '', NULL, ''
'gender', 'varchar(15)', 'YES', '', NULL, ''
'picture', 'varchar(255)', 'YES', '', NULL, ''
'contact_number','varchar(255)','YES', '', NULL, ''
'country', 'varchar(255)', 'YES', '', NULL, ''
'state', 'varchar(255)', 'YES', '', NULL, ''
'city', 'varchar(255)', 'YES', '', NULL, ''
'dob', 'date', 'YES', '', NULL, ''
'type', 'int(11)', 'NO', '', '1', ''
'verified', 'int(11)', 'NO', '', '0', ''
'is_first_login','int(11)', 'NO', '', '1', ''
'status', 'int(11)', 'NO', '', '1', ''
'remember_token','text', 'YES', '', NULL, ''
'created_at', 'timestamp', 'NO', '', '0000-00-00 00:00:00', ''
'updated_at', 'timestamp', 'NO', '', '0000-00-00 00:00:00', ''
我怎样才能解决这个问题 建议:
请为用于选择目的的列编制索引。同时,表结构数据类型长度将根据您的需要减少 假设不需要varchar(255)作为Ex.contact_号码,varchar(10)就足够了
这是优化表和快速检索表中数据的最佳方法。对于大型数据库,Mysql索引有助于解决速度问题,可以在表中创建索引以更快、更高效地查找数据。所以必须创建索引,你可以在这里了解更多关于MYsql索引的信息第一件事没有order by的限制是没有意义的,你可以在限制之前使用主键执行order by。你能告诉我们你的结构吗?如果没有这些,就很难找到问题。@AbhikChakraborty好吧,它是按id排序的。。。我必须明确订购吗?这能解决我的问题吗?你能运行
explain SELECT*FROM foo.bar LIMIT 1544代码>并显示输出?@tommyley这是一个错误的概念,mysql存储无序的数据,除非使用order by,否则无法保证获得有序的数据。是的,用户按id排序
,由于id是主键,它将使用索引对数据进行排序,这会更快。所以这种缓慢的性能是正常的吗?没有人一次选择这么多行数据?