나는 만 이상의 레코드가 내 데이터베이스에있는 사전을 가지고이 간단MySQL의 쿼리 성능 최적화
select * from Word where languageId = 'en' order by rand() limit 1
무작위로 하나 개의 단어를 선택하는 선택합니다.
문제는이 요청이 3-4 초 동안 지속되는데, 이는 여러 번 반복해야하기 때문에 매우 길다는 것입니다.
동일한 작업을 훨씬 빠르게 수행 할 수있는 방법이 있습니까?
편집 - 테이블 스키마
wordId - integer, auto increment
languageId - varchar (FK), values like cs, en, de, ...
word - varchar, word itself
데이터 구조의 예를
wordId languageId word
--------------------------
1 cs abatyše
...
100000 cs zip
100001 en aardvark
...
etc
SQL
CREATE TABLE Language (
languageId VARCHAR(20) NOT NULL ,
name VARCHAR(255) NULL ,
PRIMARY KEY(languageId));
CREATE TABLE Word (
wordId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
languageId VARCHAR(20) NOT NULL ,
word VARCHAR(255) NULL ,
PRIMARY KEY(wordId) ,
INDEX Word_FK_Language(languageId),
FOREIGN KEY(languageId)
REFERENCES Language(languageId)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
레코드 ID 열이 있습니까? – Cheery
@Cheery 예, 있습니다 – user219882
할 일에 대해 자세히 알려주십시오. 단일 쿼리를 수행 할 필요가 없거나 솔루션을 최적화 할 수 있습니다. – Cheery