예를 들어 사용자가 이미 등록되어 있는지 확인하는 방법입니다. 웹 응용 프로그램에서? 1 백만 명의 사용자 데이터베이스가 있습니다. 데이터베이스의 모든 단일 행을 비교할 때마다 비효율적입니다. 다른 최적의 접근 방법이 있습니까?사용자가 이미 등록되어 있는지 확인하는 가장 좋은 방법은
답변
당신은 최적화 할 수 있습니다 query
사람이 등록 할 때, 당신은
예, 이름 또는 IP가 같을 수 있습니다! 확실한 비교는 사용자 이름 또는 전자 메일에만 있으며, 존재 여부를 확인하므로 각 행을 쿼리해야합니다! –
@RachitMishra 당신은 Balusc의 두 번째 예제를 볼 수 있습니다. 정확히 내가 말한 것입니다. 사용자 이름을 저장하고 날씨가 기록을 사용할 수 있는지 확인합니다. –
네 동생, 너와 동의, NTR에 +1. –
을usename
쿼리 것을 전달하고 이미 등록되어 있는지 확인하거나 할 수없고 우선은 사용자의 고유 한 이름 (또는 고유 매개 변수)를 유지할 수 있습니다데이터베이스에있는 모든 단일 행을 비교할 때마다 비효율적이다
나는 당신이 SELECT * FROM User
으로 자바의 메모리에 전체 DB 테이블의 내용을 운반하고 모든 행 전을 통해 반복하고 있다는 수집 n while
루프와 사용자 이름을 아래와 같이 equals()
으로 비교하면 사실입니까?
public boolean exists(String username) throws SQLException {
// ... Declare, etc.
statement = connection.prepareStatement("SELECT * FROM User");
resultSet = statement.executeQuery();
while (resultSet.next()) {
if (username.equals(resultSet.getString("username"))) {
return true;
}
}
return false;
// ... Close, etc (in finally!)
}
는 그런 다음 실제로 매우 비효율적이다. 사용자 이름 열을 인덱싱해야합니다 (아마도 이미 UNIQUE
제약 조건이 있음). 그리고 SQL WHERE
절을 사용해야합니다. 정확히 0 또는 1 행을 반환 할 것이고 DB는 가장 좋은 방법을 찾을 것입니다. 이는 대개 위의 Java 방식보다 훨씬 빠릅니다.
public boolean exists(String username) throws SQLException {
// ... Declare, etc.
statement = connection.prepareStatement("SELECT id FROM User WHERE username = ?");
statement.setString(1, username);
resultSet = statement.executeQuery();
return resultSet.next();
// ... Close, etc (in finally!)
}
는만큼 당신이 DB 인덱스의 적절한 사용을하고 반환과 같은 SQL 쿼리를 작성할 때 정확히 이후 필터링 자바를 사용하거나 추가 쿼리 당신이 어떤 필요없이, 필요한 정보, 그러면 가장 효율적인 방법이 될 것입니다.
- 1. 안드로이드 응용 프로그램에 사용자가 이미 등록되어 있는지 확인하는 방법
- 2. 모바일 장치가 이미 등록되어 있는지 확인하는 방법
- 3. 사용자가 skype에 등록되어 있는지 확인하십시오.
- 4. PHP : PDO : 전자 메일이 이미 등록되어 있는지 확인하는 방법은 무엇입니까?
- 5. DLL이 이미 등록되어 있는지 확인하십시오.
- 6. .NET DLL이 등록되어 있는지 확인하는 방법은 무엇입니까?
- 7. 전자 메일이 이미 양식에 등록되어 있는지 확인하는 방법
- 8. jQuery "Fancybox"가 이미 등록되어 있는지 확인하십시오.
- 9. 쿠키가 있는지 확인하는 가장 좋은 방법은 무엇입니까?
- 10. 양식 인증에 사용자 이름이 이미 있는지 확인하는 가장 좋은 방법
- 11. 외부 데이터가 MySQL 데이터베이스에 이미 있는지 확인하는 가장 좋은 방법
- 12. 이미 본 그림인지 확인하는 가장 좋은 방법
- 13. 도메인 이름이 이미 등록되어 있는지 찾으십니까?
- 14. 종류가 이미 등록되어 있는지 여부를 감지하는 방법
- 15. 사용자가 로그 오프했는지 확인하는 가장 좋은 방법
- 16. 스트림이 온라인 라디오 웹 사이트에 등록되어 있는지 확인하는 방법은 무엇입니까?
- 17. 엔티티가 이미 데이터베이스에 있는지 확인하는 가장 빠른 방법은 무엇입니까? 순간
- 18. 행이 있는지 확인하는 가장 좋은 방법
- 19. Android의 SQLite 데이터베이스에 사용자가 이미 있는지 확인하는 방법은 무엇입니까?
- 20. express-validator에 customValidators 사용자가 이미 있는지 확인하는 방법은 무엇입니까?
- 21. 클라이언트 스크립트 리소스가 페이지에 등록되어 있는지 확인하는 방법은 무엇입니까?
- 22. DataReader에 열이 있는지 확인하는 가장 좋은 방법
- 23. 사용자가 채널 목록에 등록되어 있는지 확인합니다.
- 24. 사용자가 데이터를 보았는지 확인하는 가장 좋은 방법
- 25. 레코드가 데이터베이스에 이미 존재하는지 확인하는 가장 좋은 방법은 무엇입니까?
- 26. 데이터가 이미 테이블에 있는지 확인하는 방법은 무엇입니까?
- 27. .NET에서 서버에 연결할 수 있는지 확인하는 가장 좋은 방법은 무엇입니까?
- 28. 사용자가 이미 로그인되어 있는지
- 29. SQL Server CE에 항목이 있는지 확인하는 가장 좋은 방법은 무엇입니까?
- 30. 뺄셈 전에 변수가 있는지 확인하는 가장 좋은 방법은 무엇입니까?
예, 다른 이름이나 IP 또는 사용자 이름으로 등록되었을 수 있습니다! 명백한 비교는 사용자 이름 일 뿐이며, 그것이 존재하는지를 검사합니다! –