我的表中有4000多行数据。我注意到它变得非常缓慢,当我尝试从mysql工作台获取所有行时,它甚至冻结。
经过一番尝试和错误后,我注意到只有选择1544行以上,它才会冻结/降低性能。
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', ''
我怎么解决这个问题?
最佳答案
意见建议:
代替*使用字段名称。
如果一次需要所有数据,则可以使用条件和限制。
如果需要一些数据,则可以使用分页,加载其他数据,然后用户向下滚动。
您可以为其创建视图并调用该视图。
关于php - 从许多行中选择时,MySQL会降低性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34872906/